Деконструкция (deconstruction) — это процесс преобразования объекта в набор переменных (или можно сказать так: разложения типа на его составляющие части). Этот механизм был введён в C# 7.0 и он часто используется вместе с кортежами и пользовательскими типами.
Например, если у вас есть кортеж:
```csharp
var person = ("Иван", 25);
```
<br>
Вы можете деконструировать его в две отдельные переменные следующим образом:
```csharp
var (name, age) = person;
```
<br>
Теперь `name` и `age` содержат значения из кортежа.
Вы также можете определить метод деконструкции для своих собственных типов. Например:
```csharp
public class Person
{
public string Name { get; }
public int Age { get; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public void Deconstruct(out string name, out int age)
{
name = Name;
age = Age;
}
}
```
<br>
Теперь вы можете деконструировать экземпляры класса `Person` так же, как вы деконструируете кортежи:
```csharp
var person = new Person("Иван", 25);
var (name, age) = person;
```
<br>
Деконструкция особенно полезна в шаблонах сопоставления с образцом, так как она позволяет вам извлекать значения прямо из шаблона.