等号 ( =
) 用于 VB.NET 中两个完全不同的运算符。它用作赋值运算符以及相等测试运算符。字符求值的运算符取决于上下文。因此,例如,在此示例中:
Dim x As Integer = 1
Dim y As Integer = 2
Dim z As Integer = x = y
您可能会认为,与在其他语言(例如 C#)中一样,在执行该代码之后x
,y
、 和z
都等于2
。但是,VB 将第二个等号视为相等测试运算符。因此,实际上,它正在这样做:
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