Выбор ответа Middle Типы значений и ссылочные спрашивают часто обновлено
Равенство record
Вопрос
Что выведет код?
record User(string Name, int Age);
var a = new User("Ира", 30);
var b = new User("Ира", 30);
Console.WriteLine($"{a == b} {ReferenceEquals(a, b)}");
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: True False. Для record компилятор генерирует равенство по значениям всех свойств и перегружает ==, поэтому a == b даёт True.
Варианты ответа
False FalseTrue TrueTrue Falseправильный ответFalse True
Разбор
Для record компилятор генерирует равенство по значениям всех свойств и перегружает ==, поэтому a == b даёт True. ReferenceEquals проверяет, один ли это объект: объекты разные, False. Для обычного класса было бы False False, равенство по ссылке.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Типы значений и ссылочные»
- Что такое boxing и unboxing
- Сравнение двух упакованных чисел через ==
- Когда происходит упаковка
- Переприсваивание параметра-класса
- default и конструктор структуры без параметров
- Число различных точек
- Сумма int с переполнением, как в unchecked
- Среднее с пропусками (int?)