Книга: 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.427. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз