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 (
// использовать объект