Выбор ответа Middle Типы значений и ссылочные спрашивают часто обновлено
Сравнение двух упакованных чисел через ==
Вопрос
Что выведет код?
object a = 1000;
object b = 1000;
Console.WriteLine($"{a == b} {a.Equals(b)}");
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: False True. У a и b статический тип object, поэтому == сравнивает ссылки, а это два разных объекта в куче: False.
Варианты ответа
True TrueTrue FalseFalse FalseFalse Trueправильный ответ
Разбор
У a и b статический тип object, поэтому == сравнивает ссылки, а это два разных объекта в куче: False. Equals виртуальный и вызывается у упакованного int, который сравнивает значения: True. Типичная ошибка ждать от == сравнения значений: оператор выбирается по статическому типу на этапе компиляции.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Типы значений и ссылочные»
- Переприсваивание параметра-класса
- default и конструктор структуры без параметров
- Число различных точек
- Сумма int с переполнением, как в unchecked
- Среднее с пропусками (int?)
- Модификаторы параметров и их смысл
- Арифметика с int?
- Изменение упакованной структуры