Console.Write(i + " ");

Console.WriteLine();

// MyClass.SIZE = 100; // Ошибка!!! He подлежит изменению!

}

}

В данном примере полеMyClass .SIZEинициализируется значением 10. После этого его можно использовать, но не изменять. Для того чтобы убедиться в этом, удалите символы комментария в начале последней строки приведенного выше кода и попробуйте скомпилировать его. В итоге вы получите сообщение об ошибке.

Ключевые слова const и volatile

Ключевое слово, или модификатор,constслужит для объявления полей и локальных переменных, которые нельзя изменять. Исходные значения таких полей и переменных должны устанавливаться при их объявлении. Следовательно, переменная с модификаторомconst,по существу, является константой. Например, в следующей строке кода:

const int i = 10;

создается переменнаяiтипаconstи устанавливается ее значение 10. Поле типаconstочень похоже на поле типаreadonly,но все же между ними есть отличие. Если поле типаreadonlyможно устанавливать в конструкторе, то поле типаconst— нельзя.

Ключевое слово, или модификатор,volatileуведомляет компилятор о том, что значение поля может быть изменено двумя или более параллельно выполняющимися потоками. В этой ситуации одному потоку может быть неизвестно, когда поле было изменено другим потоком. И это очень важно, поскольку компилятор C# будет автоматически выполнять определенную оптимизацию, которая будет иметь результат лишь в том случае, если поле доступно только одному потоку. Для того чтобы подобной оптимизации не подвергалось общедоступное поле, оно объявляется какvolatile.

Этим компилятор уведомляется о том, что значение поля типаvolatileследует получать всякий раз, когда к нему осуществляется доступ.

Оператор using

Помимо рассматривавшейся ранеедирективыusing, имеется вторая форма ключевого слова using в видеоператора.Ниже приведены две общие формы этого оператора:

using (obj)    {

// использовать объектobj

}

using (типobj = инициализатор){

// использовать объектobj

}

Перейти на страницу:

Похожие книги