Продолжим про record’ы. Что они такое внутри?
Народ в общем пока стремается record’ов. И это понятно, если думать об этом, как о какой-то новой сущности в C#. Но так думать не надо, потому что под капотом это обычный класс.
Тут понятно, что каждый умник может сказать “под капотом это обычный …”. Вот уж реально заебали эти умники со своим “под капотом”. Давайте просто посмотрим, как sharplab.io декомпильнет вот такую строку:
public record Person(string FullName, DateOnly DateOfBirth);
✅ Результатами можно насладиться по ссылке https://vk.cc/cbcKK8. Но вот главное:
1️⃣ За вас реализованы свойства с приватными сеттерами и инитами, а также конструктор, в котором эти свойства инициализированы.
2️⃣ Реализован интерфейс IEquatable
3️⃣ Есть метод Deconstruct, который позволяет писать
var neoPerson = person with { FullName = "Neo" };
4️⃣ И конечно грамотно переопределен метод ToString(), про что я подробно рассказывал в следующем микропосте
Итого: Одна, всего одна! строка экономит вам около 135 строк кода и кучу нервов!