Выбор ответа Middle Строки обновлено

Строки, приведённые к object

Вопрос

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

object x = "hello";
object y = string.Concat("hel", "lo".ToString());
Console.WriteLine(x == y);

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

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

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

Коротко

Правильный ответ: False. Переменные имеют статический тип object, поэтому == сравнивает ссылки, а не содержимое: перегрузка string.operator == выбирается только при статическом типе string.

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

  1. True
  2. Falseправильный ответ
  3. Ошибка компиляции
  4. Зависит от версии .NET

Разбор

Переменные имеют статический тип object, поэтому == сравнивает ссылки, а не содержимое: перегрузка string.operator == выбирается только при статическом типе string. Строка y создана во время выполнения, это другой объект, итог False. Компилятор выдаст лишь предупреждение CS0252/CS0253 о возможном сравнении ссылок. Надёжно: x.Equals(y) или string.Equals(a, b).

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

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