C# → Структуры

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

Оператор new для структур действует иначе, нежели для классов и других типов по ссылке, вместо выделения памяти в куче оператор new для структуры вызывает конструктор по умолчанию, который инициализирует все поля своими значениями (заменить его не представляется возможным).

Для структуры можно определить конструктор, но только с параметрами. Нельзя определить конструктор не принимающий параметров. Для структур можно определить методы Dispose() и Close(), однако деструктор Finalize() не поддерживается.

Для структур оператор = = по умолчанию не выполняет ничего.

        struct PointStruct
        {
            public int X, Y, Z;
            public PointStruct(int initX, int initY, int initZ)
            {
                X = initX; Y = initY; Z = initZ;
            }
        } ...

  PointStruct myStruct = new PointStruct(10, 20, 30);

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