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これは、方程式の両辺が true の場合に限り、logical が true を返すために発生します。上記でやろうとしていることを達成するには、両側が何かであるかどうかをテストし、AND結果の両側が真であることを確認する 2 つのチェックが必要です。

于 2013-05-02T13:22:02.083 に答える