Ключевое слово 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,
который участвует в равенстве записей