Vb.net 在Visual Basic 2008中使用两个等号

Vb.net 在Visual Basic 2008中使用两个等号,vb.net,variable-assignment,equality,Vb.net,Variable Assignment,Equality,在代码中,为什么这不起作用 intMax = intTopValue = 20 这被解释为intMax=(intTopValue=20) intTopValue=20将检查intTopValue是否等于20,并返回true或false。 然后将该布尔值分配给intMax 大多数语言没有这个问题,因为它们对赋值(=或:=)和相等(=或=)使用单独的运算符 相反,VB为这两个操作共享=。因此,当把a=b写成一个表达式时,它总是表示相等。匈牙利符号不受欢迎。不要在变量名中添加int。@SLaks匈牙

在代码中,为什么这不起作用

intMax = intTopValue = 20

这被解释为
intMax=(intTopValue=20)

intTopValue=20
将检查
intTopValue
是否等于
20
,并返回true或false。
然后将该布尔值分配给
intMax

大多数语言没有这个问题,因为它们对赋值(
=
:=
)和相等(
=
=
)使用单独的运算符


相反,VB为这两个操作共享
=
。因此,当把
a=b
写成一个表达式时,它总是表示相等。

匈牙利符号不受欢迎。不要在变量名中添加
int
。@SLaks匈牙利符号有实际问题吗?这可能仅仅是另一个宗教冲突的问题吗?@nick-匈牙利符号对于所有.NET开发都是不赞成的:参见中的第2.6节-甚至在VB.NET中。我是一个初学者,所以我试图理解这一点,但是-VB将等式的左侧作为答案,将等式的右侧作为等式本身,这是否有效?这两个等号告诉VB intMax等于一个未声明的变量。我不知道你在说什么。不要认为这是一个等式。这是一个赋值-它将
intMax
赋值给一个表达式。。。这更有道理,谢谢你。如果你还有什么要补充的话,我将不胜感激。有些语言也可能有双重赋值,即A=B=C意味着将C的值赋值给A和B。所以,至少可以说,这个结构是相当模糊的。我不建议在任何编程语言中使用它。@MikeKeskinov:在除VB以外的每种语言中,
=
是一个普通运算符,它赋值给左操作数并计算赋值,因此解析为
a=(B=C)
,而
B=C
计算为
C
。这是正常语法。