Проверяет знание особенностей хранения строк и оптимизации памяти.
string в C# — ссылочный тип с неизменяемым содержимым. CLR использует intern pool — таблицу статически созданных литералов и интернированных строк, чтобы хранить одну копию одинаковых значений. Это экономит память и ускоряет сравнение через ссылочное равенство для литералов.
Ссылочный, immutable:
Строка создаётся в куче, после создания не меняется.
String Pool:
Литералы и явно интернированные строки (string.Intern) хранятся в пуле.
Повторный литерал возвращает ту же ссылку.
Преимущества интернирования:
Экономия памяти при множестве одинаковых литералов.
Быстрое сравнение object.ReferenceEquals.
Минусы:
Пул затирается только при выгрузке сборщика домена.
Интернирование больших динамических строк может привести к утечкам памяти.
Вывод:
Строковый пул полезен для часто повторяющихся литералов, но не для больших динамических строк.