Sean Chambers
Sean Chambers

Reputation: 8680

C# string concatenation and string interning

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?

Upvotes: 4

Views: 1531

Answers (2)

Konrad Rudolph
Konrad Rudolph

Reputation: 545588

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.

Upvotes: 0

Lasse V. Karlsen
Lasse V. Karlsen

Reputation: 391336

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.

Upvotes: 4

Related Questions