2012-03-14 32 views

回答

2

不,它不會。該代碼將直接轉換爲IL stloc命令。它將基本上編譯爲以下內容

ldstr "text" 
stloc.0 
-2

我對此表示懷疑 - 爲什麼會

但是,爲什麼不找自己,運行ILDASM,看看代碼從intern pool並將其存儲產生

7
string txt1 = "text"; 

負載串"text"作爲參考txt1變量。

因此,舉例來說,如果你有

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

然後ReferenceEquals(txt2, txt3) == true,因爲這兩個變量引用同一個字符串對象在池中實習生。

String Constructor創建一個新的非實體字符串對象。

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

因此ReferenceEquals(txt1, txt4) == false

有一個例外:new String(new char[0])返回對內部池中""字符串對象的引用。

相關問題