Карточка 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 ошибок.
Термины по теме
Ещё по теме «Типы значений и ссылочные»
- Что такое boxing и unboxing
- Сравнение двух упакованных чисел через ==
- Когда происходит упаковка
- Переприсваивание параметра-класса
- default и конструктор структуры без параметров
- Число различных точек
- Сумма int с переполнением, как в unchecked
- Среднее с пропусками (int?)