2015-08-31 85 views

回答

0

dt是最有可能DataTable類的對象(想想作爲正常數據庫t的DataTable能夠),其中顯示DataRow[]類型的屬性(即DataRow數組),使用它可以通過傳遞行索引來訪問DataTable的單個行;例如dt.Rows[4]會給你你的DataTable的第五排。

DataRow對象(認爲DataRow的作爲數據的單個行)依次暴露其自身object[]類型的分度器(一個object數組,它是),其可以訪問到該DataRow的所有列的各個值。因此,如果您的DataRow對象的名稱爲dr,則可以使用dr[2]來訪問或更改此dr的第3列的值。所以,如果你想訪問或更改第五行的第三列的值,你可以這樣做:

var dr = dt[4]; //5th row is returned and stored in dr 
var MyVal = dr[2]; //Value of dr's 3rd column is stored in MyVal 

,或者你可以在一行做到這一點:

var MyVal = dt[4][2]; 

這正是你的代碼正在做,即它基本上將第一行的第一列的值dt傳遞給構造函數frmMain

我懷疑是您的DataTable只被用作單個值的容器(一個單個整數,一個字符串等),即dt只包含一行和該行中有隻有一個值,其可以成爲某物的ID。如果是這樣,您應該更好地檢查您的代碼並查看它實際準備的位置並填充dt對象。有更好的方法從數據庫訪問單個值(谷歌ExecuteScalar()),這將使您擺脫首先創建一個DataTable,然後訪問其行和列。

+0

非常感謝!它以更好的方式解釋了完整的概念。 。 –

+0

@AsifPatankar:很高興知道。 Plz考慮接受幫助像你這樣的人的答案。 – dotNET

+0

已經完成,但它說我需要一些聲譽來顯示數量的變化。再次感謝! –

0

「formMain entry = new formMain」是一個構造函數語法,它意味着該算法正在創建一個formMain類型的對象並調用該對象formMain。

行[0] [0]是稱爲行的多維數組內的多維數組引用。行[0] [0]本身可能是任何類型的數據,包括值,數組,多維數組,對象...

如果X是一個數組,那麼X [0]是陣列,例如: X = [3,4,2,8,9];如果Y是多維數組,則Y [0]是第一個子數組,Y [0] [0]是數組Y [0]中的第一個條目,例如: Y = [[2,4,1],[2,3],[9,9,9,9]]; Y [1] [1] = 3.

此外,因爲它是dt.Rows,這意味着行是一個名爲'dt'的對象的屬性。 dt幾乎普遍地表示數據表(儘管這是一種正常/最佳實踐,而不是該語言的一部分)。

假設代碼中的正常RDB(關係數據庫)引用(現在我可能假設得太多,所以仔細檢查)行[0] [0]看起來像是特定數據庫表中的左上角單元格,它是存儲在對象dt中。

更多關於在C#中的多維數組:

更多關於在C#構造函數:https://msdn.microsoft.com/en-us/library/ace5hbzh.aspx

+0

鑑於'dt'是一個'DataTable','dt.Rows [0] [0]'與多維數組沒有任何關係,只是它*看起來像*那樣。看到我的答案,確切地說,這裏發生了什麼。 – dotNET

相關問題