DataTable行计数检查是否也使用TryParse?

时间:2014-05-13 17:08:44

标签: vb.net datatable

这段代码可以收紧吗?

如果需要DataTable.Rows.Count,是否需要进行TryParse检查?

If dtDataTable.Rows.Count > 0 Then
    Try
        Boolean.TryParse(dtDataTable.Rows.Item(0).Item("IsBoolValue").ToString(), m_bBoolean)
    Catch ex As Exception
        ' we got a NULL
        m_bBoolean = False
    End Try
Else
    m_bBoolean = False
End If

感谢。

1 个答案:

答案 0 :(得分:1)

是的,因为如果没有行,则表达式

dtDataTable.Rows.Item(0).Item("IsBoolValue").ToString() 

在被TryParse分析之前产生NullReferenceException,并且您不希望使用类似的异常处理程序来驱动代码。与处理异常的成本相比,在测试之前使用简单IF的成本非常低。

另外,我认为最好在DBNull.Value上引入测试以避免任何可能的异常

m_bBoolean = False
If dtDataTable.Rows.Count > 0 Then
    if(dtDataTable.Rows.Item(0).Item("IsBoolValue") <> DBNull.Value) Then
        Boolean.TryParse(dtDataTable.Rows.Item(0).Item("IsBoolValue").ToString(), m_bBoolean)
    End if
End If