關(guān)于string的對(duì)象引用
什么都不說了, 一切都在代碼里:
1 string a1 = "aaa"; // 在堆中分配"aaa"
2 string a2 = "aaa"; // 堆中已有"aaa", 則不再給"aaa"分配新空間,a2指向a1的地址
3 string a3 = new string("aaa".ToCharArray()); // new產(chǎn)生新的對(duì)象,分配新的空間
4
5 Console.WriteLine(object.ReferenceEquals(a1, "aaa")); //Ture
6 Console.WriteLine(object.ReferenceEquals(a1, a2)); //True
7 Console.WriteLine(object.ReferenceEquals(a1, a3)); //False
8
9 string b1 = "bbb";
10
11 string c1 = "aaabbb"; // 定義"aaabbb"
12 string c2 = "aaa" + "bbb"; // "aaa"和"bbb"都是常量, 合成為"aaabbb"指向c1
13 string c3 = a1 + "bbb"; // a1是變量, 則給c3分配新的空間
14 string c4 = a1 + b1; // 同上, c4分配新的空間
15 string c5 = a1 + b1; // 同上, c5分配新的空間
16
17 Console.WriteLine(object.ReferenceEquals(c1, c2)); //True
18 Console.WriteLine(object.ReferenceEquals(c1, c3)); //False
19 Console.WriteLine(object.ReferenceEquals(c1, c4)); //False
20 Console.WriteLine(object.ReferenceEquals(c3, c4)); //False
21 Console.WriteLine(object.ReferenceEquals(c5, c4)); //False
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。