Структура в C# - это конструкция языка, состоящая из ключевого слова struct, идентификатора и тела. Структура может содержать в своем теле поля, свойства и методы. Также структуры могут включать в свое тело другие структуры и классы, но такой подход не является широко распространённой техникой.
Структуры должны использоваться только для хранения маленьких, единых, желательно неизменных значений. Используйте структуры для упрощения списков параметров методов.
Структура может содержать конструктор, который выполняет инициализацию объекта по умолчанию. Однако необязательно использовать конструктор, но в этом случае, чтобы использовать структуру (методы или свойства которые будут пытаться получить доступ к полям структуры), понадобиться первоначально инициализировать все ее поля извне. Пример приведен ниже.
Создаем структуру Book:
struct Book
{
public string name;
public string author;
public int year;
}
Используем структуру на практике:
class Program
{
static void Main(string[] args)
{
Book book;
book.name = "Война и мир";
book.author = "Л. Н. Толстой";
book.year = 1869;
}
}
Особенности:
ValueType
.При создании структуры в методе, она хранится в стековой памяти. В таком случае структура является локальной переменной.
MyStruct struct = new MyStruct();
При создании же массива экземпляров структур в методе, они хранится в куче, а указатель(4 байта) на участок в памяти хранится в стеке.
MyStruct[] array = new MyStruct[42];
Также возможно в течении хода программы менять место хранения структуры, и переносить ее либо в управляемую кучу, либо в стек. (Подробнее: Упаковка\Распаковка | Boxing\Unboxing)
Если экземпляр структуры является member'ом класса, он всегда храниться в куче.
Resources | |
---|---|
[Структуры С# \ | Metanit.com](https://metanit.com/sharp/tutorial/2.13.php) |
О вреде изменяемых значимых типов - http://sergeyteplyakov.blogspot.com/2011/07/blog-post.html |