如何使VB .NET的AND充当&&

时间:2013-04-24 16:37:36

标签: .net vb.net bitwise-operators

我正在和今天的同事讨论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不适合我。

1 个答案:

答案 0 :(得分: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仅返回true。为了完成您在上面尝试做的事情,测试双方是否是某些东西,那么您需要进行两次检查,以确保AND的两边都为真。