我对VB.net比较陌生,因为我刚学完一门C#课程,所以缺少括号会让我对如何编写特定的运算符组合产生很多困惑。
我试图用VB重现的这行代码的C#等价物如下所示:
if ( (a == 0 && b != null) || (a == 1 && c != null) )我不知道如何在VB中写这个,我尝试了许多组合的和,或,AndAlso,OrElse等,但我不能达到预期的结果。
我找不到任何关于运算符的C# v.s. VB.net比较的明确示例,而且我的注释也没有帮助。
有人能帮我解决这个问题吗?
发布于 2011-09-14 03:52:41
等于运算符在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 IfC# &&在VB中转换为AndAlso。
C# ||在VB中转换为OrElse。
使用这些运算符,一旦确定结果,求值就会立即停止。这就是所谓的“短路”评估。例如,在a && b中,如果a为false,则已知结果为false,并且不会计算b。当评估有副作用时,这一点尤其重要,例如执行数据库查询、引发事件或修改数据。它在像这样的person != null && person.Name == "Doe"条件下也很有用,在这种情况下,如果第一项的计算结果为false,则第二项将抛出异常。
与不使用短路评估的VB And和Or布尔运算符等效的是C#中的&和|。在这里,所有的术语都将被评估。
If (a = 0 Or b = 0 And c = 0) Then
statement
End Ifif (a = 0 | b = 0 & c = 0) {
statement;
}发布于 2011-09-14 03:49:35
vb.net的等价物是
If (a = 0 AndAlso b IsNot Nothing) OrElse (a = 1 AndAlso c IsNot Nothing ) Then请注意,在c#中,它应该是a == 0而不是a = 0
通过全面的比较查看this post。
发布于 2011-09-14 03:49:27
if ( (a =0&b != null) || (a =1&c != null) )
等同于:
if ( (a =0 AndAlso b IsNot Nothing) OrElse (a=1 AndAlso c IsNot Nothing) )
https://stackoverflow.com/questions/7407571
复制相似问题