【发布时间】:2011-01-18 10:56:57
【问题描述】:
快速的问题,其中最快和最简单的答案可能是重新排列相关代码,但让我们看看......
所以我有一个使用 VB.NET 重写的 If 语句(一段代码,它是用 C# 编写的完整工作解决方案的一部分)。我知道 VB.NET IIf(a, b, c) 方法会同时评估 b 和 a 而不管第一次评估的真实性如何,但是这 似乎 在我的标准构造中也是如此:
If (example Is Nothing Or example.Item IsNot compare.Item) Then
'Proceed
End If
或者,更恰当地说:
If (example Is Nothing Or Not example.Item = compare.Item) Then
'Proceed
End If
在这里,如果 example 是 Nothing (null),那么我仍然会得到 NullReferenceException - 这是我的错,还是我必须忍受 VB.NET 的突发奇想?
【问题讨论】:
-
在 99.9% 的情况下,您应该使用
OrElse和AndAlso而不是or和and。