Книга: C# для профессионалов. Том II
Константы, ассоциированные с классом (статические константы)
Константы, ассоциированные с классом (статические константы)
Обычный способ определения статической константы в C++ состоит в записи члена класса как static const
. C# делает это похожим образом, но с помощью более простого синтаксиса:
Синтаксис C++:
int CMyClass::MyConstant = 2;
class CMyClass {
public:
static const int MyConstant;
Синтаксис C#:
class MyClass {
public const int MyConstant = 2;
Отметим, что в C# константа не определяется явно как static
, если это сделать, то возникнет ошибка компиляции. Она является, конечно, неявно статической, так как не существует возможности задать значение константы более одного раза, и, следовательно, она всегда должна быть доступна как статическое поле.
int SomeVariable = MyClass.MyConstant;
Ситуация становится интереснее, если статическую константу инициализировать некоторым значением, которое вычисляется во время выполнения. C++ не имеет средств, чтобы это сделать. Для достижения такого результата потребуется найти некоторые возможности инициализировать переменную при первом обращении к ней, что означает, что ее прежде всего невозможно объявить как const
. В случае C# статические константы инициализируются во время выполнения. Поле определяется как readonly
и инициализируется в статическом конструкторе.
class MyClass {
public static readonly int MyConstant;
static MyClass() {
// определяет и присваивает начальное значение MyConstant
}
- Константы
- 1.2.3. Константы, переменные и типы
- 7.15. Статические методы
- Статические классы
- Статические члены
- Статические данные, формы и CGI-сценарии
- Статические и динамические библиотеки
- Статические параметры
- 8.1. Статические библиотеки
- Константы гудвилла: стиль, паблисити, репутация, имидж и бренд фирмы
- Лекция 7. Статические структуры: классы
- Лекция 18. Глобальные объекты и константы