3

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取自

有什么办法让我知道吗?

4

3 回答 3

5

您可能对该IsInterned方法有一些运气,null如果字符串没有被保留,它会返回,如果它是从池中获取的,则返回一个引用。但是,此行为将取决于运行时,并且可能不会产生您期望的结果。

于 2011-12-31T13:20:50.867 回答
4

我认为 IsInterned 方法可以帮助您:http: //msdn.microsoft.com/en-us/library/system.string.isinterned.aspx

于 2011-12-31T13:19:13.710 回答
3

是的,使用String.IsInterned().

请参阅MSDN 页面

于 2011-12-31T13:21:22.467 回答