Ключевое слово record
Ключевое слово record объявляет ссылочный тип,
для которого компилятор генерирует сравнение по полям,
ToString и декомпозицию. Позиционный синтаксис
задаёт свойства в заголовке. Это ссылочный тип, как
class, но два экземпляра
с одинаковыми данными считаются равными.
Синтаксис
record Имя(тип Поле1, тип Поле2);
Пример
Давайте сравним две записи с одинаковыми полями:
using System;
record Point(int X, int Y);
class Program
{
static void Main()
{
var first = new Point(1, 2);
var second = new Point(1, 2);
Console.WriteLine(first == second);
}
}
Результат выполнения кода:
True
Пример
Давайте выведем строковое представление записи:
using System;
record User(string Name, int Id);
class Program
{
static void Main()
{
var user = new User("abcde", 5);
Console.WriteLine(user);
}
}
Результат выполнения кода:
User { Name = abcde, Id = 5 }
Пример
Давайте создадим копию записи с изменённым полем через with:
using System;
record Line(string Text, int Len);
class Program
{
static void Main()
{
var source = new Line("abcde", 5);
var copy = source with { Text = "12345" };
Console.WriteLine(copy.Text);
}
}
Результат выполнения кода:
"12345"
Смотрите также
-
ключевое слово
record struct,
которое задаёт запись как тип-значение -
ключевое слово
class,
которое объявляет обычный ссылочный тип -
оператор
with,
который копирует запись с правками -
метод
Equals,
который сравнивает объекты по значению