我一直在玩弄徹底理解參考和值類型。就在我以爲有了它時,我碰到了這個場景......參考和值類型場景
我創建了一個包含單個對象的類。
class Container
{
public object A {get; set;}
}
當我創建這個Container類的實例(a)時,我創建了一個引用類型的實例。我爲該類中的對象分配一個整數。據我所知,這將作爲另一個參考類型的對象裝箱。
int start = 1;
Container a = new Container{ A=start };
我創建容器類(B)的另一個實例,但將第一個容器到它的值,b的值現在是一個參考。
Container b = a;
正如我打印出a.A和b.A的值一樣,它們是相同的。
Console.WriteLine("a.A={0},b.A={1}",a.A,b.A);
//a.A=1,b.A=1
而且,正如所料,當我改變A.A的價值b.A的價值也會發生變化,由於它們引用同一個對象。
a.A = 2;
Console.WriteLine("a.A={0},b.A={1}",a.A,b.A);
// a.A=2,b.A=2
現在我決定嘗試使用單個本地對象。再次,我將整數放入第一個對象中,並將第一個對象的值分配給第二個對象。我相信這個對象應該是一個引用類型,所以c和d應該引用同一個對象。不改變任何東西,它們會返回相同的值。
int start = 1;
object c = start;
object d = c;
Console.WriteLine("c={0},d={1}",c,d);
// c=1,d=1
像以前一樣,當改變初始對象的值時,我期望兩個對象的值是相同的。
c = 2;
Console.WriteLine("c={0},d={1}",c,d);
// c=2,d=1
當我打印這兩個對象的結果時,d的值不會像以前那樣改變。
有人可以解釋爲什麼在這種情況下,作業與以前不同嗎?
感謝