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

Структуры

Структуры

Синтаксис определения структур в C# соответствует синтаксису определения классов.

struct MyStruct {
 private SomeField;
 public int SomeMethod() {
  return 2;
 }
}

Наследование и связанные концепции, виртуальные и абстрактные функции не допускаются. В остальном базовый синтаксис идентичен синтаксису классов, за исключением того, что ключевое слово struct заменяет в определении class.

Существуют, однако, различия между структурами и массами, когда дело доходит до создания. В частности, структуры всегда имеют конструктор по умолчанию, который обнуляет все поля, и этот конструктор по-прежнему присутствует, даже если определены другие собственные конструкторы. Также невозможно явно определить конструктор без параметров для замены конструктора по умолчанию. Можно определить только конструкторы с параметрами. В этом отношении структуры в C# отличаются от своих аналогов в C++.

В отличие от классов в C#, структуры являются типом данных значений. Это означает, что такая инструкция как:

MyStruct Mine;

реально создает экземпляр MyStruct в стеке. Однако в C# этот экземпляр не инициализируется, если конструктор не вызван явно:

MyStruct Mine = new MyStruct();

Если все поля-члены из MyStruct являются открытыми, можно альтернативно инициализировать структуру, преобразуя каждое поле-член по отдельности.

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


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