【发布时间】:2010-04-13 18:04:09
【问题描述】:
在DataTable 对象中,通过名称thisRow("ColumnA") 而不是通过列索引thisRow(0) 查找列值是否会增加开销?在哪些情况下这可能是个问题。
我在一个拥有丰富 VB6 代码编写经验的团队工作,我注意到没有按名称对 DataTable 对象或数据网格进行列查找。即使在 .NET 代码中,我们也使用一组整数常量来引用这些类型对象中的列名。我问我们的团队负责人为什么会这样,他提到在 VB6 中,通过列名而不是索引来查找数据有很多开销。 .NET 仍然如此吗?
示例代码(在 VB.NET 中,但同样适用于 C#):
Public Sub TestADOData()
Dim dt As New DataTable
'Set up the columns in the DataTable '
dt.Columns.Add(New DataColumn("ID", GetType(Integer)))
dt.Columns.Add(New DataColumn("Name", GetType(String)))
dt.Columns.Add(New DataColumn("Description", GetType(String)))
'Add some data to the data table '
dt.Rows.Add(1, "Fred", "Pitcher")
dt.Rows.Add(3, "Hank", "Center Field")
'Method 1: By Column Name '
For Each r As DataRow In dt.Rows
Console.WriteLine( _
"{0,-2} {1,-10} {2,-30}", r("ID"), r("Name"), r("Description"))
Next
Console.WriteLine()
'Method 2: By Column Name '
For Each r As DataRow In dt.Rows
Console.WriteLine("{0,-2} {1,-10} {2,-30}", r(0), r(1), r(2))
Next
End Sub
是否存在方法 2 比方法 1 提供性能优势的情况?
【问题讨论】: