Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Готовые билеты.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
44 Кб
Скачать
☆

22)Атрибуты.

Атрибуты — это дополнительные сведения об элементах программы. С помощью атрибутов можно добавлять информацию в метаданные сборки и затем извлекать ее во время выполнения программы. Атрибут является специальным видом класса и происходит от базового класса System. Attribute.

Атрибуты делятся на стандартные и пользовательские.

При использовании (спецификации) атрибутов они задаются в секции атрибутов, располагаемой непосредственно перед элементом, для описания которого они предназначены. Секция заключается в квадратные скобки и может содержать не­ сколько атрибутов, перечисляемых через запятую. Порядок следования атрибутов произвольный. Для каждого атрибута задаются имя, а также необязательные параметры и тип элемента сборки, к которому относится атрибут. Простейший пример атрибута:

[Serializable]

class Monster

{

[NonSerialized]

string name;

int health, ammo;

}

Атрибут [Serializable], означающий, что объекты этого класса можно сохранять во внешней памяти, относится ко всему классу Monster. При этом поле name помечено атрибутом [NonSerialized], что говорит о том, что это поле сохраняться не должно.

Типы элемента сборки, задаваемые для атрибутов

assembly Атрибут относится ко всей сборке

field Атрибут относится к полю

event Атрибут относится к событию

method Атрибут относится к методу

pa ram Атрибут относится к параметрам метода

property Атрибут относится к свойству

return Атрибут относится к возвращаемому значению

type Атрибут относится к классу или структуре

Атрибут может иметь параметры. Они записываются в круглых скобках через запятую после имени атрибута и бывают позиционными и именованными. Именованный параметр указывается в форме имя = значение, для позиционного про­ сто задается значение. Например, для использованного в следующем фрагменте кода атрибута CLSCompliant задан позиционный параметр true. Атрибуты, относящиеся к сборке, должны располагаться непосредственно после директив using, например:

using System;

[assembly:CLSCompliant(true)]

namespace ConsoleApplicationl

{ ...

Стандартные атрибуты, как и другие типы классов, имеют набор конструкторов, которые определяют, каким образом использовать (специфицировать) атрибут. Фактически, при использовании атрибута указывается наиболее подходящий конструктор, а величины, не указанные в конструкторе, задаются через именованные параметры в конце списка параметров.

23)Пространства имен.

Пространство имен — это контейнер для типов, определяющий область их видимости. Пространства имен предотвращают конфликты имен и используются для двух взаимосвязанных целей:

• логического группирования элементов программы, расположенных в различных физических файлах;

• группирования имен, предоставляемых сборкой в пользование другим модулям.

Если в разных файлах описать пространства имен с одним и тем же именем, то при построении приложения, состоящего из этих файлов, будет скомпоновано единое пространство имен.

Существует три способа использования типа, определенного в каком-либо пространстве имен:

1. Использовать полностью квалифицированное имя.

2. Использовать директиву using, с помощью которой импортируются все имен; из заданного пространства.

3. Использовать псевдоним типа. Это делается с помощью второй формы директивы using

В версию языка С# 2.0 введена возможность применять псевдоним пространства имен с помощью операции ::

Использование псевдонима для пространства имен гарантирует, что последующие подключения других пространств имен к этой сборке не повлияют на существующие определения.

24) Директивы препроцессора.

Препроцессором в языке С++ называется предварительный этап компиляции, формирующий окончательный вариант текста программы. В языке С#, потомке С++, препроцессор практически отсутствует, но некоторые директивы сохранились. Назначение директив — исключать из процесса компиляции фрагменты ода при выполнении определенных условий, выводить сообщения об ошибках предупреждения, а также структурировать код программы. каждая директива располагается на отдельной строке и не заканчивается точкой запятой, в отличие от операторов языка. В одной строке с директивой может располагаться только комментарий вида //.