Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky.rtf
Скачиваний:
27
Добавлен:
22.03.2016
Размер:
11.9 Mб
Скачать

10.2. Поля классов (статические поля)

Как формулирует стандарт языка C#, поле

"поле"

— это член класса,

который представляет переменную, ассоциированную с объектом или классом.

Поле – это объявление данных (константы, переменной, объекта), принадлежащих

либо классу в целом, либо каждому из его объектов. Чтобы поле принадлежало не

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

его объявляют статическим, используя модификатор static. Если в объявлении поля

этот модификатор отсутствует, то поле является полем объектов

"поле:поле

объектов" . В этом случае полю выделяется память и оно становится доступным для

использования только при и после создания объекта. Статическое поле

"поле:статическое поле"

размещается в памяти в момент загрузки кода класса.

Статическое поле (поле класса "поле:поле класса" ) доступно для использования

и

до и после создания объектов класса.

Объявление статистического поля имеет вид:

модификаторыopt static

тип_поля список_объявлений;

Индекс opt указывает на необязательность модификаторов отличных от static.

В качестве этих необязательных модификаторов поля могут использоваться уже

перечисленные модификаторы доступа public, private, protected, internal. Кроме

них в объявление поля могут входить модификаторы:

new – применяется при наследовании (см. главу 13);

readonly "поле:модификатор поля readonly" запрещает изменять значение поля.

Поле получает значение при его инициализации или за счет действий

конструктора, и это значение сохраняется постоянно.

volatile – модификатор поля "поле:модификатор поля volatile" , указывающий, что

его значение может измениться независимо от операторов программы.

Примером может быть переменная, значение которой сохраняет момент

начала выполнения программы. Два последовательных запуска программы приведут

к разным значениям этого поля. Второй пример – поле, значение которого в

процессе выполнения программы может изменить операционная система или

параллельно выполняемый процесс.

Зачастую список объявлений поля содержит только одно объявление. Каждое

объявление в списке имеет следующий вид:

идентификатор инициализатор_поля opt

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

Если в объявлении поля отсутствует инициализатор, то инициализация

выполняется по умолчанию значением соответствующего типа. В соответствии с

общей концепцией типов языка C# поля могут иметь типы ссылок и типы значений.

Возможны следующие формы инициализаторов полей

полей" :

"поле:инициализато

р

= выражение

= инициализатор_массива

= new тип (аргументы_конструктора)

В выражение инициализатора, в инициализатор массива и в выражения,

используемые в качестве аргументов конструктора, могут входить константы–

литералы, а также другие статические члены этого класса.

Нестатические

члены

невозможно

использовать

в

инициализирующем

выражении статического поля.

Пример инициализации и использования статических полей:

// 10_01.cs - статические поля класса

using System;

class T {

Соседние файлы в папке CSBasicCourse2ndedPodbelsky