1

在我的 Visual Basic .net 应用程序中,我想做类似的比较

If myObject IsNot Nothing And myObject.property <> 0 Then
...
EndIf

问题是当 myObject 什么都不是时我得到空引用异常。所以我必须嵌套 IF 语句:

If myObject IsNot Nothing Then
    If myObject.property <> 0 Then
    ...
    EndIf
EndIf

是否可以在不嵌套 IF 的情况下进行这种比较?

4

3 回答 3

6

您必须使用AndAlso(相当于&&在 C# 中)。这是执行短路逻辑连接的逻辑运算符。And执行没有短路的逻辑运算(相当于&在 C# 中),从而分析两个操作数。

于 2013-10-31T10:34:27.053 回答
2

你可以这样尝试:

If Not IsNothing(myObject) AndAlso myObject.property <> 0 Then
    ...
EndIf

也许它对你有用。

于 2013-10-31T10:53:47.570 回答
2

AndAlso 是一个短路的“和”。如果第一部分没有被评估为真,那么第二部分将不会被评估,因此不会出错

http://msdn.microsoft.com/en-us/library/cb8x3kfz.aspx

于 2013-10-31T10:35:31.423 回答