Выбор ответа Middle Типы значений и ссылочные спрашивают часто обновлено

Сравнение двух упакованных чисел через ==

Вопрос

Что выведет код?

object a = 1000;
object b = 1000;
Console.WriteLine($"{a == b} {a.Equals(b)}");

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: False True. У a и b статический тип object, поэтому == сравнивает ссылки, а это два разных объекта в куче: False.

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

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

Разбор

У a и b статический тип object, поэтому == сравнивает ссылки, а это два разных объекта в куче: False. Equals виртуальный и вызывается у упакованного int, который сравнивает значения: True. Типичная ошибка ждать от == сравнения значений: оператор выбирается по статическому типу на этапе компиляции.

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

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

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