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

Ключевое слово record struct

Сочетание record и struct объявляет тип-значение с автоматическим равенством по полям и ToString. При присваивании копируется значение, как у struct, но сравнение == учитывает данные полей, как у record.

Синтаксис

record struct Имя(тип Поле1, тип Поле2);

Пример

Давайте сравним две записи-структуры с одинаковыми полями:

using System; record struct Pair(int Left, int Right); class Program { static void Main() { var first = new Pair(1, 2); var second = new Pair(1, 2); Console.WriteLine(first == second); } }

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

True

Пример

Давайте проверим, что присваивание создаёт копию:

using System; record struct Cell(int Value); class Program { static void Main() { var first = new Cell(5); var second = first; second = second with { Value = 10 }; Console.WriteLine(first.Value); } }

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

5

Пример

Давайте выведем текстовое представление записи-структуры:

using System; record struct Tag(string Name); class Program { static void Main() { var tag = new Tag("abcde"); Console.WriteLine(tag); } }

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

Tag { Name = abcde }

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

  • ключевое слово record,
    которое задаёт ссылочную запись
  • ключевое слово struct,
    которое объявляет обычную структуру
  • оператор with,
    который создаёт копию с изменёнными полями
  • метод GetHashCode,
    который участвует в равенстве записей
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить