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 литеральные строки интернируются по умолчанию)
Около минуты
3 мая 2022