我在vb.net中有一个if语句,其内容如下:
If String.IsNullOrEmpty(someDate) Or CDate(someDate) > DateTime.Now Then
'Do stuff here
End If
当someDate = Nothing时,app barfs。我可以发誓,这些语句从左到右阅读,一旦找到匹配条件就会进入If代码块。
我可以编写另一个只进行空检查的语句。这导致没有错误。有人可以澄清这个吗?
答案 0 :(得分:2)
他们做从左到右,问题是您使用Or
来评估每个条件。您需要使用短路版本OrElse
:
If String.IsNullOrEmpty(someDate) OrElse CDate(someDate) > DateTime.Now Then
'Do stuff here
End If