Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何制作VB.NET';并担任&&;_.net_Vb.net_Bitwise Operators - Fatal编程技术网

如何制作VB.NET';并担任&&;

如何制作VB.NET';并担任&&;,.net,vb.net,bitwise-operators,.net,Vb.net,Bitwise Operators,今天我和一位同事讨论了VB.NET和C#之间的一些差异。他指出,&&充当位运算符,而VB.NET的和并不总是这样做。为了演示,我们键入了一些代码,使用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" st

今天我和一位同事讨论了VB.NET和C#之间的一些差异。他指出,&&充当位运算符,而VB.NET的和并不总是这样做。为了演示,我们键入了一些代码,使用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

我正试图想出一种方法使上述陈述“有效”。而且对我来说也不起作用。

唯一的方法是修改逻辑来测试两个实例,如果您需要检查两个实例是否都是某物或什么都不是

试试这个例子:

 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


这是因为逻辑的
只有在等式的两边都为真时才返回真。为了完成上述工作,请测试两边是否都是某物,然后需要进行两次检查,以确保
的两边都是真的。

您的示例确实不清楚<代码>不是一无所有
为假,那么为什么您希望它们都为假表示您收到了消息框?您试图在VB中模拟的等效C#代码是什么?在上面的示例中,msgbox应该触发为,并且正在计算A为Nothing=True,但NOT'ed使其为FALSE B为Nothing=True,但NOT'ed使其为FALSE,因此FALSE和FALSE应该触发msgbox,但是,它不是。不…FALSE和FALSE将计算为FALSE。因此,和比较失败。只有当两个评估都返回true时,才会返回true。
False和False
实际上可能是
False
可能——一个人不应该在3小时的睡眠中编码……但唉……就业的危险。