2012-03-14 2 views

答えて

2

いいえ、それはできません。このコードは直接IL stlocコマンドに変換されます。基本的には次のようにコンパイルされます。

ldstr "text" 
stloc.0 
-2

は、私はそれを疑う - なぜだろう、それ

しかし、なぜ自分を探し、実行ILDASMとintern poolと記憶するから

7
string txt1 = "text"; 

負荷文字列"text"を発生させるどのようなコード表示されませんtxt1変数のリファレンスとして使用します。

だから、例えば、あなたが持っているならば、ReferenceEquals(txt2, txt3) == true

string txt2 = "text"; 
string txt3 = "text"; 

、両方の変数は、インターンプールに同じ文字列オブジェクトを参照するため。

String Constructorは、新しい非文字列オブジェクトを作成します。

string txt4 = new String("text".ToCharArray()); 

so ReferenceEquals(txt1, txt4) == false

例外はあります。new String(new char[0])は、インタープール内の""文字列オブジェクトへの参照を返します。

関連する問題