Найти тему
9 подписчиков

String s1 = "Hello"


String s2 = "Hello"

Console.WriteLine(Object.ReferenceEquals(s1, s2)); // 'False'

s1 = String.Intern(s1);

s2 = String.Intern(s2);

Console.WriteLine(Object.ReferenceEquals(s1, s2)); // 'True'

Это интернирование строк. Ввиду того, что строка, это неизменяемый объект, вы можете не плодить объекты одинаковых строк, а просто возвращать ссылку на уже существующий в куче объект

(Приведённый выше код справедлив для framework 4.5 . В свежих версиях dotnet литеральные строки интернируются по умолчанию)
Около минуты