Структуры

Структуры подобны классам в том смысле, что они представляют структуры данных и методы для работы с ними. Однако в отличие от классов структуры являются размерными типами и не требуют выделения памяти в куче. Переменная типа «структура» непосредственно содержит данные структуры, в то время как переменная типа «класс» содержит ссылку на данные, называемые объектом.

Структуры уместно использовать для небольших структур данных с семантикой размерных типов. Комплексные числа, точки в координатной системе, пары «ключ-значение» в словарях - все это хорошие примеры структур. Основным является то, что они не содержат значительного объема данных, не требуют наследуемости и ссылочной идентичности, а также могут применяться с размерной семантикой, когда присваивание копирует значение вместо ссылки.

Определение структур

Определение структур производится следующим образом.

struct-declaration:

attributesopt   struct-modifiersopt   Struct   struct-name   struct-interfacesopt   struct-body

End Struct struct-nameopt   ;

struct-name:

identifier

Модификаторы структур

Определение структуры может опционально содержать следующие модификаторы.

struct-modifiers:

struct-modifier

struct-modifiers   struct-modifier

struct-modifier:

Public

Friend

Модификаторы при определении структуры имеют то же значение, что и при определении класса. При повторении одного и того же модификатора выдается ошибка компиляции.

Реализация интерфейсов

Определение структуры может содержать реализацию интерфейсов.

struct-interfaces:

:   interface-type-list

Реализация интерфейсов описана в разделе Интерфейсы: Реализация интерфейсов.

Тело структуры

Тело структуры состоит из определений ее членов.

struct-body:

struct-member-declarationsopt

См.также:

Описания и синтаксические правила