2010-06-11 25 views

回答

2
int i = 5; 
int j = i; 

以int形式複製數據是一種值類型並存儲在堆棧中。

DataSet ds = dsOtherDataSet.Copy(); 

根據文檔Copy方法複製數據集的結構和數據。所以ds將具有與原始結構相同的結構,但是如果兩個內部存儲的參考值將指向相同的存儲位置。

DataView dvTemp = dsTestDataSet.Copy().DefaultView; 

只有引用被複製爲DataView是引用類型。

1

如果類型爲struct然後複製始終由值完成。如果class那麼通過參考。

內部方法如CopyClone等所做的內容沒有嚴格定義,取決於實施它們的人。

如果DataSet.Copy msdn告訴我們深拷貝已完成(「複製此DataSet的結構和數據」),這意味着它完全重新創建數據集。但是,Copy方法返回對新數據集的引用。

1

在第一種情況下,int不是它們是值類型的對象。因此,對於「int j = i」,會創建另一個int,然後將i中的值複製到其中。如果您使用複製,那麼它可能使用深度複製來創建對象的另一個副本。但你應該知道該副本是否爲deep-copy or just a shallow copy。如果您要使用DataSet ds = dsOtherDataSet或Object obj = someOtherObject,則只傳遞它們的地址,因此僅供參考。

相關問題