Что выведет код Middle Строки обновлено
Строки: ==, Equals и ссылки
Вопрос
Что выведет программа (.NET 8)? По строке на каждый вывод.
string a = "net";
string b = string.Concat("n", "et");
object oa = a, ob = b;
Console.WriteLine(a == b);
Console.WriteLine(oa == ob);
Console.WriteLine(oa.Equals(ob));
Console.WriteLine((object)a == (object)string.Intern(b));
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: True, False, True, True. a == b у строк сравнивает содержимое: True. oa == ob сравнивает ссылки, b собрана во время выполнения: False (компилятор предупредит).
Что выведет
True
False
True
True
Разбор
a == b у строк сравнивает содержимое: True. oa == ob сравнивает ссылки, b собрана во время выполнения: False (компилятор предупредит). Equals виртуальный, вызовется string.Equals: True. string.Intern(b) возвращает строку из пула, а литерал "net" уже там лежит, это тот же объект, что a: True.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.