Что выведет код 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 ошибок.