Sobes.tech
Middle+

String task: what will be output? How is the == operator overloaded for strings? What is a string interning pool?

sobes.tech AI

Answer from AI

In C#, the == operator for strings is overloaded so that it compares not the reference to the object, but the content of the strings — their sequence of characters. This means that two different string variables with the same text will return true when compared with ==.

String interning pool is a special storage in memory where unique instances of string literals are stored. When a string literal is created, the CLR checks the pool: if such a string already exists, a reference to it is returned; otherwise, the string is added to the pool. This helps save memory and speeds up string comparisons, as identical literals refer to the same object.

Example:

string a = "hello";
string b = "hello";
string c = new string(new char[] {'h','e','l','l','o'});

Console.WriteLine(a == b); // True, contents are the same
Console.WriteLine(object.ReferenceEquals(a, b)); // True, both refer to the pool
Console.WriteLine(a == c); // True, contents are the same
Console.WriteLine(object.ReferenceEquals(a, c)); // False, c is created explicitly, not from the pool

Thus, the == operator compares the content of strings, and the interning pool ensures reuse of identical string literals.

String task: what will be output? How is the ==… - sobes.tech