等号(=
)は、VB.NETの2つのまったく異なる演算子に使用されます。これは、代入演算子としてだけでなく、等価性テスト演算子としても使用されます。キャラクターが評価する演算子は、コンテキストによって異なります。したがって、たとえば、この例では次のようになります。
Dim x As Integer = 1
Dim y As Integer = 2
Dim z As Integer = x = y
C#などの他の言語と同様に、そのコードを実行した後は、、、およびすべてが。に等しくなると考えるかもx
しれy
ませz
ん2
。ただし、VBは2番目の等号を等号演算子として扱います。したがって、実際には、これを実行しています。
If x = y Then
z = True
Else
z = False
End If
ただし、整数変数にブール値を割り当てようとしていることに気付くでしょう。あなたがOption Strict On
(あなたがそうするべきであるように)持っているならば、それはあなたがそれをすることを許さないでしょう。それが本当にあなたがやりたかったことであるなら、それはあなたにそれを整数にキャストすることを強制するでしょう、それはそれをもう少し明白にします:
z = CInt(x = y)
ただし、それでも混乱を招くため、通常、この種のことはVB.NETでは推奨されていません。ですから、あなたが投稿したコードOption Strict
は、オンにするとコンパイルすらできないのではないかと思います。しかし、これは実際にやろうとしていることです。
Dim temp1 As Boolean = (label3 = label) ' Evaluates to False
Dim temp2 As Boolean = (Me.demandas2.Item(temp1) = (dictionary.Item(label3) - 1)) ' Likely evaluates to False
dictionary = temp2 ' Couldn't possibly be a valid assignment