OPTION STRICT OFF - NULL异常

时间:2014-06-27 12:46:41

标签: vb.net

请参阅以下代码:

Dim strHideReason As String = strHideReason & " " & objDBDR.GetName(intHideCheck) & " is " & objDBDR(intHideCheck)

objDBDR(intHideCheck)为null。 objDBDR是一个datareader。

上面的代码编译,但是我试图将option strict设置为on,所以我现在必须这样做:

Dim strHideReason As String = strHideReason & " " & objDBDR.GetName(intHideCheck) & " is " & cstr(objDBDR(intHideCheck))

它现在抛出异常。我可以重构代码来解决这个问题,但是我很困惑为什么第一个编译。当option strict关闭时,编译器是否会忽略字符串连接中为空的对象?

1 个答案:

答案 0 :(得分:0)

当OPTION STRICT OFF时:
在运行时,您的对象objDBDR(intHideCheck)将自动转换(如果可能)以键入字符串 来自MSDN

  

对于Visual Basic中的字符串,空字符串等于Nothing

objDBDR(intHideCheck)返回Nothing,它将转换为字符串为空字符串。

当OPTION STRICT ON时:
此选项限制隐式转换,您必须自己将对象转换为字符串 对于函数Cstr,如果参数为null,则运行时错误将被抛出

这个答案将解释为什么会抛出运行时错误:
https://stackoverflow.com/a/979911/1565525