String.Intern有值吗?

时间:2011-12-31 13:17:00

标签: c# .net string-interning

String.Intern有一个特殊的字符串池,以后可以检索它。

有没有办法让我知道从池中取出指定的字符串 ,并且是否是新创建的? 例如:

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 从池中取出

有什么方法让我知道吗?

3 个答案:

答案 0 :(得分:5)

您可能对IsInterned方法有好运,如果字符串未被实现则返回null,如果从池中获取,则返回引用。但是,此行为将取决于运行时,并且可能无法产生您期望的结果。

答案 1 :(得分:4)

答案 2 :(得分:3)

是的,请使用String.IsInterned()

请参阅MSDN page