2017-04-19 30 views
0

我有一個即將被清除的類的實例(objA = null)。在此之前,我想將該對象的字段複製到另一個我將保存的實例(objB)中。在將第一個對象置零之前從另一個對象的字段中分配一個對象的字段

如果我做了以下將objB保持其值objA爲空後的值。

objB.field1 = objA.field1; 
objB.field2 = objA.field2; 
objB.innerClass = objA.innerClass; 

再後來......

objA = null; 

如果其中一個字段是引用類型而不是值類型?這會有所作爲嗎?

+2

您是否嘗試過? –

回答

1

這可以很容易地測試。我有一個例子(SomeProp是int?):

private int? Q = 5; 

private void button_Click(object sender, RoutedEventArgs e) 
{ 
    MyClass a = new MyClass(); 
    a.SomeProp = Q; 
    MyClass b = new MyClass(); 
    b.SomeProp = a.SomeProp; 
    a = null; 
    MessageBox.Show(b.SomeProp.ToString()); //Outputs 5 
    Q = null; 
    MessageBox.Show(b.SomeProp.ToString()); //Still outputs 5 
} 

我試圖完全相同的代碼,但使用串,在輸出沒有差別。

0

基元(值類型)將分配內存。

引用類型將在內存中有一個地址。當您爲另一個引用指定另一個對象的值時,該值將指向內存中的地址。

將Reference類型設置爲null後,指向該地址的任何指針都將返回null。

一個很好的解釋可以在這裏找到: Primitive Types and Reference Types

相關問題