我有示例代碼。在C#中賦值和創建字符串實例有什麼區別?
var charMass = new char[] { 's', 't', 'r' };
string myString = new string(charMass);
string myString2 = new string(charMass);
string myString3 = "str";
string myString4 = "str";
bool bb1 = Object.ReferenceEquals(myString, myString2);
bool bb2 = Object.ReferenceEquals(myString, myString3);
bool bb3 = Object.ReferenceEquals(myString3, myString4);
爲什麼bb1和bb2是假的?我知道equals必須顯示爲真,因爲它比較值,但對於這些字符串的內存分配情況如何?爲什麼myString3和myString4指向堆中的同一塊內存,但myString和myString2不是?
http://stackoverflow.com/questions/4232789/why-does-referenceequalss1-s2-returns-true 也許上面的鏈接可以幫助你。 – 2013-02-21 10:10:19
這[文章](http://en.wikipedia.org/wiki/String_interning)可以解釋你的問題。 – 2013-02-21 10:15:11