Выбор ответа Middle Строки обновлено
Строки, приведённые к object
Вопрос
Что выведет код?
object x = "hello";
object y = string.Concat("hel", "lo".ToString());
Console.WriteLine(x == y);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: False. Переменные имеют статический тип object, поэтому == сравнивает ссылки, а не содержимое: перегрузка string.operator == выбирается только при статическом типе string.
Варианты ответа
TrueFalseправильный ответ- Ошибка компиляции
- Зависит от версии .NET
Разбор
Переменные имеют статический тип object, поэтому == сравнивает ссылки, а не содержимое: перегрузка string.operator == выбирается только при статическом типе string. Строка y создана во время выполнения, это другой объект, итог False. Компилятор выдаст лишь предупреждение CS0252/CS0253 о возможном сравнении ссылок. Надёжно: x.Equals(y) или string.Equals(a, b).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.