Книга: 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
, то ему можно присвоить значение только в конструкторе.
- Константы
- 1.2.3. Константы, переменные и типы
- Перемещать файлы удобнее, если запустить два экземпляра Проводника и разместить их окна бок о бок. Можно ли это делать а...
- Константы гудвилла: стиль, паблисити, репутация, имидж и бренд фирмы
- Лекция 18. Глобальные объекты и константы
- 11.2. Константы и контекстные переменные
- Константы строковых типов
- Листинг 11.10. Код, который должен быть помещен в форму для создания экземпляра пользовательского элемента управления
- Символьные константы
- Манифестные константы
- Константы базовых типов
- Атрибуты-константы