В объекте 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?