Структуры (Руководство по программированию на C#)Structs (C# Programming Guide)

Структуры определяются с помощью ключевого слова struct, например:Structs are defined by using the struct keyword, for example:

public struct PostalAddress
{
    // Fields, properties, methods and events go here...
}

Структуры используют большую часть того же синтаксиса, что и классы, однако они более ограничены по сравнению с ними.Structs share most of the same syntax as classes, although structs are more limited than classes:

  • В объявлении структуры поля не могут быть инициализированы до тех пор, пока они будут объявлены как const или static.Within a struct declaration, fields cannot be initialized unless they are declared as const or static.

  • Структура не может объявлять используемый по умолчанию конструктор (конструктор без параметров) или метод завершения.A struct cannot declare a default constructor (a constructor without parameters) or a finalizer.

  • Структуры копируются при присваивании.Structs are copied on assignment. При присваивании структуры к новой переменной выполняется копирование всех данных, а любое изменение новой копии не влияет на данные в исходной копии.When a struct is assigned to a new variable, all the data is copied, and any modification to the new copy does not change the data for the original copy. Это важно помнить при работе с коллекциями типов значений, такими как Dictionary<string, myStruct>.This is important to remember when working with collections of value types such as Dictionary<string, myStruct>.

  • Структуры являются типами значений, а классы — ссылочными типами.Structs are value types and classes are reference types.

  • В отличие от классов структуры можно создавать без использования оператора new.Unlike classes, structs can be instantiated without using a new operator.

  • Структуры могут объявлять конструкторы, имеющие параметры.Structs can declare constructors that have parameters.

  • Структура не может наследовать от другой структуры или класса и не может быть базовой для класса.A struct cannot inherit from another struct or class, and it cannot be the base of a class. Все структуры наследуют непосредственно от System.ValueType, который наследует от System.Object.All structs inherit directly from System.ValueType, which inherits from System.Object.

  • Структуры могут реализовывать интерфейсы.A struct can implement interfaces.

  • Структура может использоваться как тип, допускающий значение NULL, и ей можно назначить значение NULL.A struct can be used as a nullable type and can be assigned a null value.

Дополнительные сведения:For more information:

См. такжеSee Also

Руководство по программированию на C#C# Programming Guide
Классы и структурыClasses and Structs
КлассыClasses