Почему dataRow.isNull принимает разные типы данных для столбцов, если указана версия? - PullRequest
0 голосов
/ 17 октября 2019

Функция .NET dataRow.IsNull () имеет 4 версии. В Visual Basic (VB) синтаксис выглядит следующим образом:

DataRow.IsNull(column As DataColumn)
DataRow.IsNull(columnIndex As Integer)
DataRow.IsNull(columnName As String)
DataRow.IsNull(column As DataColumn, version As DataRowVersion)

В C # используется тот же шаблон синтаксиса:

DataRow.IsNull(DataColumn)
DataRow.IsNull(Int32)
DataRow.IsNull(String)
DataRow.IsNull(DataColumn, DataRowVersion)

На первый взгляд это выглядит довольно странно: почемуРазве эти два определения не включены в спецификацию (если отметить только версию VB, то C # будут следовать аналогичной схеме)?

DataRow.IsNull(columnIndex As Integer, version As DataRowVersion)
DataRow.IsNull(columnName As String, version As DataRowVersion)

Вот несколько моих мыслей:

Может быть столбцаIndex или coloumnName иногда может быть недостаточно, чтобы указать на столбец, который мы хотим проверить на нулевое значение, нотолько когда указана версия?

Тривиально, кажется, я мог бы определить эти отсутствующие функции в несколько строк в терминах определения функции 4 th в первом кодовом блоке выше. Например, для первого случая для VB:

Function IsNull(columnIndex As Integer, version As DataRowVersion) As Boolean
    Dim dt As DataTable = Table() //dataRow.Table()
    Dim dc As DataColumn = dt.Columns(columnIndex)
    Return IsNull(dc, version)

Параметр DataRowVersion делает это проблематичным?

...