Карточка Middle Типы значений и ссылочные обновлено

record class и record struct

Вопрос

Что даёт record по сравнению с обычным классом?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

- Равенство по значению (Equals, GetHashCode, ==) по всем полям. - Неразрушающее копирование with: var b = a with { Age = 31 };. - Позиционный синтаксис: record User(string Name, int Age) создаёт init-свойства, конструктор и Deconstruct. - Понятный ToString(): User { Name = Ира, Age = 30 }. record это класс, record…

Ответ

  • Равенство по значению (Equals, GetHashCode, ==) по всем полям.
  • Неразрушающее копирование with: var b = a with { Age = 31 };.
  • Позиционный синтаксис: record User(string Name, int Age) создаёт init-свойства, конструктор и Deconstruct.
  • Понятный ToString(): User { Name = Ира, Age = 30 }. record это класс, record struct (C# 10) это структура с теми же возможностями.

Разбор

record удобен для DTO и неизменяемых доменных значений. Для сущностей EF Core с идентичностью по ключу record обычно не подходит.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме