Книга: C# для профессионалов. Том II
Инициализация полей членов
Разделы на этой странице:
Инициализация полей членов
Синтаксис, используемый для инициализации полей членов в C#, очень отличается от синтаксиса C++, хотя конечный результат одинаковый.
Члены экземпляра
В C++ поля членов экземпляра обычно инициализируются в списке инициализации конструктора:
MyClass::MyClass() : m_MyField(6) {
// и т.д.
В C# этот синтаксис недопустим. Можно помещать в инициализатор конструктора (который является эквивалентом C# списка инициализации конструктора в C++) другой конструктор. Вместо этого инициализированное значение помечается с помощью определения члена в определении класса:
class MyClass {
private int MyField = 6;
Отметим, что в C++ это будет ошибкой, так как C++ использует примерно такой же синтаксис для определения чисто виртуальных функций. В C# такое действие считается нормой, так как C# не применяет синтаксис =0
для этой цели (он использует вместо этого ключевое слово abstract
).
Статические поля
В C++ статические поля инициализируются с помощью отдельного определения вне класса:
int MyClass:MyStaticField = 6;
На самом деле в C++, даже если не требуется инициализировать статическое поле, необходимо включить эту инструкцию, чтобы избежать ошибки компоновки. В противоположность этому C# не ожидает подобной инструкции, так как в C# переменные объявляются только в одном месте:
Class MyClass {
private static int MyStaticField = 6;
- Доступность членов
- Инициализаторы полей
- Определение членов класса
- Создание и инициализация семафоров
- Инициализация структур
- Установка размера файла, инициализация файла и разреженные файлы
- Инициализация: анализ бизнес-экосистем
- Инициализация Winsock
- Инициализация дескриптора безопасности
- Пример: инициализация атрибутов защиты
- Разрешение автоприращения для полей
- Роль членов исполнительного и организационного комитетов