2014-11-22 72 views
0

將數據庫的行值分配給新的數據行對象後,此對象中的任何更改都會影響數據表,爲什麼?Datarow對象,爲什麼這段代碼有效?

看看這段代碼。

DataRow dr = mydataset.Tables["NewTable"].Rows[0]; 
    dr["Name"] = "hello"; 

現在,如果你嘗試調試應用程序,你會發現,原來的數據表[「newtable的」]有新價值的招呼,而不是舊值雖然我們並沒有返回回上述數據行數據表(我們沒有保存它)

我只需要澄清,也需要知道&瞭解當我創建一個數據行的對象時實際發生了什麼。

回答

1

DataTable和DataRow都是引用數據類型。這意味着,當您將一個變量賦值給代碼中的引用時,它只是將指針保存回相同的內存位置。

DataRow dr1 = mydataset.Tables["NewTable"].Rows[0]; 
DataRow dr2 = mydataset.Tables["NewTable"].Rows[0]; 
DataRow dr3 = dr1; 
DataTable dt = mydataset.Tables["NewTable"]; 
DataRow dr4 = dt.Rows[0]; 

在上例中,dr1,dr2,dr3和dr4都指向相同的內存位置。因此,如果您編輯dr4,則更改將顯示在dr1,dr2和dr3上。

請參閱Value Types and Reference Types瞭解更多信息。