Выбор ответа 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.

Варианты ответа

  1. False False
  2. True True
  3. True Falseправильный ответ
  4. False True

Разбор

Для record компилятор генерирует равенство по значениям всех свойств и перегружает ==, поэтому a == b даёт True. ReferenceEquals проверяет, один ли это объект: объекты разные, False. Для обычного класса было бы False False, равенство по ссылке.

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

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

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