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 从池中取出
有什么方法让我知道吗?
答案 0 :(得分:5)
您可能对IsInterned
方法有好运,如果字符串未被实现则返回null
,如果从池中获取,则返回引用。但是,此行为将取决于运行时,并且可能无法产生您期望的结果。
答案 1 :(得分:4)
我认为IsInterned方法可以帮助您:http://msdn.microsoft.com/en-us/library/system.string.isinterned.aspx
答案 2 :(得分:3)
是的,请使用String.IsInterned()
。
请参阅MSDN page。