这段代码可以收紧吗?
如果需要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
感谢。
答案 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