我对VB.net很陌生,因为我刚刚完成了一个C#课程,所以缺少括号会对如何编写某些操作符组合产生很多困惑。
我试图在VB中重现的行的C#等价物是这样的:
if ( (a == 0 && b != null) || (a == 1 && c != null) )
我不知道如何在VB中编写这个,我尝试了And,Or,AndAlso,OrElse等的许多组合,但我无法达到预期的效果。
我找不到任何关于C#v.s的明显例子。关于运算符的VB.net比较,以及我的注释也没有帮助。
有人可以帮我解决这个问题吗?
答案 0 :(得分:4)
vb.net等价物将是
If (a = 0 AndAlso b IsNot Nothing) OrElse (a = 1 AndAlso c IsNot Nothing ) Then
请注意,在c#中,它应为a == 0
而不是a = 0
结帐this post并进行全面比较。
答案 1 :(得分:4)
等号运算符在C#中为==
,在VB中为=
。
if ( (a == 0 && b != null) || (a == 1 && c != null) )
statement; // One single statement only
或
if ( (a == 0 && b != null) || (a == 1 && c != null) ) {
statement; // Any number of statements
}
此在线conversion tool会将其转换为VB:
If (a = 0 AndAlso b IsNot Nothing) OrElse (a = 1 AndAlso c IsNot Nothing) Then
statement
End If
C#&&
转换为VB中的AndAlso
C#||
转换为VB中的OrElse
。
使用这些运算符,一旦确定结果,评估就会停止。这被称为“短路”评估。例如。在a && b
中,如果false
为a
,则结果为false
,并且不会评估b
。当评估具有副作用时,这一点尤为重要,例如执行数据库查询,引发事件或修改数据。它在像person != null && person.Name == "Doe"
这样的条件下也很有用,如果第一项计算结果为false
,则第二个会抛出异常。
不使用短路评估的VB And
和Or
布尔运算符相当于C#中的&
和|
。这里将始终评估所有术语。
If (a = 0 Or b = 0 And c = 0) Then
statement
End If
if (a = 0 | b = 0 & c = 0) {
statement;
}
答案 2 :(得分:0)
if((a = 0&& b!= null)||(a = 1&& c!= null))
等同于:
if((a = 0 AndAlso b IsNot Nothing)OrElse(a = 1 AndAso c IsNot Nothing))