Has String.Intern had the value?
-
13-05-2021 - |
Question
String.Intern
has a special pool for strings which can later be retrieved.
Is there any way for me to know that the specified string was taken from the pool , and was NOt newly created ? example :
string s1 = "MyTest";
string s2 = new StringBuilder().Append("My").Append("Test").ToString();
string s3 = String.Intern(s2);
Console.WriteLine((Object)s2==(Object)s1); // Different references.
Console.WriteLine((Object)s3==(Object)s1); // The same reference.
s3 ref val was taken from the pool
is there any way for me to know it ?
Solution
You might have some luck with the IsInterned
method, it returns null
if the string wasn't interned, and returns a reference if it was taken from the pool. However, this behaviour will depend on the runtime, and might not yield what you expect.
OTHER TIPS
I think that IsInterned method could help you: http://msdn.microsoft.com/en-us/library/system.string.isinterned.aspx
Yes, use String.IsInterned()
.
See the MSDN page.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow