【问题标题】:How are "anded" 'if' conditions evaluated? [duplicate]如何评估“anded”“if”条件? [复制]
【发布时间】:2014-05-27 07:46:48
【问题描述】:

在 C# 中,如果我们有以下代码:

if (condition1 && condition2)

条件 1 为假,条件 2 是否仍被检查,还是在 if 语句之后继续执行?

【问题讨论】:

标签: c# if-statement


【解决方案1】:

是的,C# 对布尔表达式进行短路评估。因此

如果 (X && Y())

1) X 会先被执行

2) Y 只有当且仅当 X 返回 true 时才会执行

这适用于所有布尔表达式,而不仅仅是 IF 语句中的那些...在 MSDN 上在线提供的 C# 规范中检查这一点。第 14.11.1 节

你也可以使用 & 并且在这种情况下它不会是一个短路评估,因为

& 是用于位操作的“与”运算符。 && 是用于计算逻辑表达式的“与”运算符。

【讨论】:

    【解决方案2】:

    不,&& 运算符正在短路。 & 运算符不是,如果你使用它,所有的表达式都会被计算。

    【讨论】:

      【解决方案3】:

      首先它评估condition1,然后如果它是true,那么它将评估condition2。如果condition1false,它将不会评估condition2。这称为short-circuit 评估。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-07
        • 1970-01-01
        • 2013-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多