Что такое интернирование строк?

Встретил такой интересный термин как интернирование строки в языке C#. Кто-то может рассказать мне что это и для чего это нужно?

Ну тут в двух словах и не расскажешь...

Попробую объяснить на простых примерах.

Вот, представь себе ситуацию: у тебя есть 3 строки.

string hello = "Hello";
string helloWorld = "Hello World";
string helloWorld2 = hello   " World";

По сути строки helloWorld и helloWorld2 должны быть равными. Давайте это проверим:

Console.WriteLine($"{(helloWorld == helloWorld2)}, {ReferenceEquals(helloWorld, helloWorld2)}");

На выходе мы получаем: True, False.

Впринципе, логично, поскольку значения у них действительно равны, а ссылки на эти значения разные (поскольку объекты таки разные).

А вот теперь давайте допишем ещё пару строк:

helloWorld2 = "Hello World";
Console.WriteLine($"{(helloWorld == helloWorld2)}, {ReferenceEquals(helloWorld, helloWorld2)}");

А вот тут мы уже видим "True, True"... Получается, что каким-то образом у нас ссылки стали равны?

И вот здесь мы приблизились к вопросу об интернировании строк. Итак, интернирование строк - это процесс, при котором ссылки одинаковых строк сливаются воедино, и в результате у нас , фактически, из нескольких строк получается одна

Об этом и многом другом Вы можете узнать на курсе C# Professional.