Книга: C# для профессионалов. Том II

Константы экземпляра

Константы экземпляра

Константы, которые ассоциированы с экземплярами класса, всегда инициализируются значениями, вычисленными во время выполнения. (Если их значения были вычислены во время компиляции, то, по определению, это делает их статическими.)

В C++ такие константы должны быть инициализированы в списке инициализации конструктора класса. Это в некоторой степени ограничивает гибкость при вычислении значений этих констант, так как начальное значение должно быть таким, чтобы его можно было записать как выражение в списке инициализации конструктора.

class CMyClass {
public:
 const int MyConstInst;
 CMyClass() : MyConstInst(45); {

В C# принцип похож, но константа объявляется как readonly, а не как const. Таким образом, ее значение задается в теле конструктора, придавая гибкость процессу, так как можно использовать любые инструкции C# при вычислении начального значения. (Вспомните, что в C# невозможно задать значения переменных в инициализаторе конструктора, только вызвать другой конструктор.)

class MyClass {
 public readonly int MyConstInst;
 MyClass() {
  // определяет и инициализирует здесь MyConstInst

Если поле в C# объявлено как readonly, то ему можно присвоить значение только в конструкторе.

Оглавление книги


Генерация: 2.688. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз