logo
CSharp_Prog_Guide

Структуры

Структуры определяются с помощью ключевого слова struct, например:

--

Структуры используют большую часть того же синтаксиса, что и классы, однако они более ограничены по сравнению с ними.

Поскольку компилятор автоматически создает и уничтожает копии структур, в использовании конструктора и деструктора по умолчанию нет необходимости. Фактически, компилятор реализует заданный по умолчанию конструктор путем назначения всем полям их значений по умолчанию. Структуры не могут наследовать от классов или других структур.

Структуры являются типами значений. Если объект создан из структуры и назначен переменной, переменная будет содержать полное значение структуры. При копировании переменной, содержащей структуру, происходит копирование всех данных, а любое изменение новой копии не влияет на данные в старой копии. Поскольку в структурах отсутствуют ссылки, они не имеют идентичности, поэтому невозможно определить разницу между двумя экземплярами типа значения с одними и теми же данными. Все типы значений в C# являются производными от ValueType, который наследует от Object.

В процессе, известном как упаковка, компилятор может преобразовать типы значений в ссылочные типы. Дополнительные сведения см. в разделе Упаковка-преобразование и распаковка-преобразование.