0

我今天与一位同事讨论了 VB .NET 和 C# 之间的一些差异。他指出 && 充当按位运算符,而 VB .NET 的 AND 并不总是这样做。为了演示我们输入了一些代码,使用 VB 这应该可以工作,但不能。

Dim a As Draw.Bitmap
Dim b As Draw.Bitmap
If (Not a Is Nothing) And (Not b Is Nothing) Then MsgBox("bang")
' in the above example both NOTs cause the "true" statement to become false, it should       
'trigger the Msgbox

我试图想出一种方法来使上述陈述“起作用”。ANDALSO 对我不起作用。

4

1 回答 1

0

这样做的唯一方法是修改逻辑以测试这两个实例,如果您需要检查两者是否都是某物或两者都不是。

试试这个例子:

 Dim oStart As New Object
 Dim oStop As New Object

 If (oStart IsNot Nothing) And (oStop IsNot Nothing) Then
     MessageBox.Show("Result1")
 ElseIf (oStart Is Nothing) And (oStop Is Nothing) Then
     MessageBox.Show("Result2")
 End If

当您运行它时,您应该会看到一个显示Result1. 现在,如果您要将声明更改为:

Dim oStart As Object
Dim oStop As New Object

反之亦然,那么您将看不到任何一个消息框,因为这两个条件都不成立。

如果您随后将声明更改为:

Dim oStart As Object
Dim oStop As Object

然后您应该会看到一个显示Result2.

AND发生这种情况是因为只有当等式两边都为真时,逻辑才会返回真。为了完成您在上面尝试做的事情,测试双方是否有或没有,然后您需要两次检查以确保AND结果的双方都是真实的。

于 2013-05-02T13:22:02.083 回答