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.

s3refvalプールから取得されました

私がそれを知る方法はありますか?

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 に答える