C# string concatenation and string interning
Question
When performing string concatentation of an existing string in the intern pool, is a new string entered into the intern pool or is a reference returned to the existing string in the intern pool? According to this article, String.Concat and StringBuilder will insert new string instances into the intern pool?
http://community.bartdesmet.net/blogs/bart/archive/2006/09/27/4472.aspx
Can anyone explain how concatenation works with the intern pool?
Solution
If you create new strings, they will not automatically be put into the intern pool, unless you concatenate constants compile-time, in which case the compiler will create one string result and intern that as part of the JIT process.
OTHER TIPS
You can see whether a string has been interned by calling String.IsInterned
. The call will return a new string that is either a reference to an interned string equal to the string that was passed as an argument, or null
if the string was not interned.