首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与条件运算符和逻辑运算符混淆- VB.net

与条件运算符和逻辑运算符混淆- VB.net
EN

Stack Overflow用户
提问于 2011-09-14 03:46:15
回答 3查看 7.5K关注 0票数 2

我对VB.net比较陌生,因为我刚学完一门C#课程,所以缺少括号会让我对如何编写特定的运算符组合产生很多困惑。

我试图用VB重现的这行代码的C#等价物如下所示:

代码语言:javascript
复制
if ( (a == 0 && b != null) || (a == 1 && c != null) )

我不知道如何在VB中写这个,我尝试了许多组合的和,或,AndAlso,OrElse等,但我不能达到预期的结果。

我找不到任何关于运算符的C# v.s. VB.net比较的明确示例,而且我的注释也没有帮助。

有人能帮我解决这个问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-14 03:52:41

等于运算符在C#中为==,在VB中为=

代码语言:javascript
复制
if ( (a == 0 && b != null) || (a == 1 && c != null) )
    statement; // One single statement only

代码语言:javascript
复制
if ( (a == 0 && b != null) || (a == 1 && c != null) ) {
    statement; // Any number of statements
}

此在线conversion tool将为您将其转换为VB:

代码语言:javascript
复制
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中,如果afalse,则已知结果为false,并且不会计算b。当评估有副作用时,这一点尤其重要,例如执行数据库查询、引发事件或修改数据。它在像这样的person != null && person.Name == "Doe"条件下也很有用,在这种情况下,如果第一项的计算结果为false,则第二项将抛出异常。

与不使用短路评估的VB AndOr布尔运算符等效的是C#中的&|。在这里,所有的术语都将被评估。

代码语言:javascript
复制
If (a = 0 Or b = 0 And c = 0) Then
    statement
End If
代码语言:javascript
复制
if (a = 0 | b = 0 & c = 0) {
    statement;
}
票数 5
EN

Stack Overflow用户

发布于 2011-09-14 03:49:35

vb.net的等价物是

代码语言:javascript
复制
If (a = 0 AndAlso b IsNot Nothing) OrElse (a = 1 AndAlso c IsNot Nothing ) Then

请注意,在c#中,它应该是a == 0而不是a = 0

通过全面的比较查看this post

票数 4
EN

Stack Overflow用户

发布于 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) )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7407571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档