为啥和运算符在 vb.net

Posted

技术标签:

【中文标题】为啥和运算符在 vb.net【英文标题】:Why And operator in vb.net为什么和运算符在 vb.net 【发布时间】:2017-09-23 14:28:08 【问题描述】:

我总是在检查多个条件时使用AndAlso,因为它不会评估右侧,除非左侧为真。我没有看到有人愿意评估右侧的任何情况,即使左侧失败。如果需要,为什么他们没有在C# 中包含相同的内容。

更新:

正如接受的答案所指出的那样,它的存在是因为它用于按位运算,这已经足够好了,但我仍然认为他们会重载 And 运算符来满足这两个目的,而不是创建 AndAlso。如果有人可以对此有所了解,那么这个问题仍然存在:)

【问题讨论】:

它们在 c# 中包含相同的内容。在 c# 中,您可以使用 & (And) 或 && (AndAlso) c# 确实有相同的。 & = And,&& = AndAlso。 @Pikoh 谢谢,从来不知道 :) 在this question上看到一个好的答案 来自 MSFT 的 Paul Vick,他参与了引入 AndAlso 的决定:The Ballad of AndAlso and OrElse。 【参考方案1】:

他们在C# 中包含相同的内容。在C# 中,您可以使用& (And) 或&& (AndAlso)。

在比较 布尔值 时,我无法想象非短路运算符的实际用例,但 And 可以与数值一起使用,然后进行按位比较。这就是它存在的原因。但是在比较布尔类型时,您将始终使用短路版本。

【讨论】:

【参考方案2】:

And 也是位运算符。这是一个显示 And 和 AndAlso 混合的示例。

    Dim foo? As Integer = 5

    If foo.HasValue AndAlso (foo And 1) = 1 AndAlso (foo And 4) = 4 Then
        Stop
    End If

【讨论】:

以上是关于为啥和运算符在 vb.net的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET 中的合并运算符和条件运算符 [重复]

在vb.net中使用c#条件运算符[重复]

VB.NET 空合并运算符? [复制]

使用类似运算符 vb.net 的通配符

查询表达式 vb.net 中缺少运算符

在运行时与 VB.NET LIKE 运算符进行大小写(不)敏感比较(无选项比较)