2011-06-16 31 views
3

爲什麼下面的第一種方法有效?我會認爲變量'row'與其他任何東西完全分離,比如DataTable1中的一行。另外,使用第一種方法有什麼缺點?要改變單行中的很多列,我寧願這樣做。更新單個數據錶行的最佳做法

dim row = Me.DataSet1.DataTable1(0) 
row.Item1=123 
DataTable1TableAdapter.Update(Me.DataSet1.DataTable1) 

OR

DataSet1.DataTable1(0).Item1=123 
DataTable1TableAdapter.Update(Me.DataSet1.DataTable1) 
+1

這兩個片段在語義上是相同的。唯一的區別是第一個有一箇中間變量。我希望這一天,使用哪一種更方便/可讀的方式。 –

回答

1

我相信按照你使用vb.net類型推斷的方式設置行。當您將其設置爲等於Me.DataSet1.DataTable1(0)時,對行進行的任何更改都將用作對Me.DataSet1.DataTable1(0)的引用。 @Bala你非常正確,他們是相等的。

如果我可以插入個人偏好,我肯定會選擇兩個選項,不需要使用不必要的變量,它顯然更清潔,更直接閱讀。就最佳做法而言,如果您不需要變量,請不要初始化它。尤其是一個直接引用表中的值的方法。希望這可以幫助。

+0

因此,如果我需要更新一行中的十幾列,如果使用第二種方法,是不是'幕後'活動更大? – John

+0

我不這麼認爲,在第一種方法中,將行的值設置爲Me.DataSet1.DataTable1(0)。所以在你的下一行,row.Item1 = 123,應該等同於DataSet1.DataTable1(0).Item1 = 123。我相當相信你會有獨立於列數的完全相同的處理速度,你只是使用一個額外的變量來首先傳遞表的引用。我不認爲它會在後臺做更少的工作,只是因爲它被稱爲引用。我可能會錯過一些東西,但從我在代碼片段中看到的內容中,這些是我的結論。謝謝。 – Madullah

0

變量 '行' 被設置爲表1的第一行。因此,當你更新table1時,它會推動對「行」進行的任何更改。