Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
41 of 1492 menu
◀ ▶

Деконструкция

Деконструкция записывает части значения в список переменных слева от =. Для кортежа пишут (int a, int b) = (1, 2). Свой тип может объявить метод Deconstruct с параметрами out, и тогда деконструкция работает так же, как для встроенного кортежа.

Синтаксис

(тип1 имя1, тип2 имя2) = значение; (тип1 имя1, тип2 имя2) = объект;

Пример

Давайте разберём кортеж из двух чисел на переменные a и b:

using System; class Program { static void Main() { (int a, int b) = (1, 2); Console.WriteLine($"{a} {b}"); } }

Результат выполнения кода:

1 2

Пример

Давайте обменяем местами значения через деконструкцию кортежа:

using System; class Program { static void Main() { int x = 1; int y = 2; (x, y) = (y, x); Console.WriteLine($"{x} {y}"); } }

Результат выполнения кода:

2 1

Пример

Давайте деконструируем объект с методом Deconstruct:

using System; class Box { public int Width { get; } public int Height { get; } public Box(int width, int height) { Width = width; Height = height; } public void Deconstruct(out int width, out int height) { width = Width; height = Height; } } class Program { static void Main() { var box = new Box(3, 4); (int w, int h) = box; Console.WriteLine($"{w} {h}"); } }

Результат выполнения кода:

3 4

Пример

Давайте возьмём из кортежа только первое значение, а второе отбросим:

using System; class Program { static void Main() { (int first, _) = (10, 20); Console.WriteLine(first); } }

Результат выполнения кода:

10

Смотрите также

  • отбрасывание,
    которое игнорирует ненужную часть
  • выражение with,
    которое копирует запись с заменой полей
  • модификатор out,
    который нужен в методе Deconstruct
  • оператор foreach,
    который перебирает элементы по одному
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить