多条件点火顺序[英] Multiple Conditions Firing order

问题描述

你好,

有谁知道这两个代码段是否会以相同的方式运行.

例如,如果第一个条件失败,是否需要检查
第二个?

if (MyList.Count 0 && CheckDate) {

//做点什么...

}



if(MyList.Count)
{
如果(检查日期)
{
//做点什么...
}
}

公共布尔 CheckDate()
{
返回真;
}

推荐答案

在C#中,和C一样,逻辑是短路的.所以当你有 if(a && b)
它只会检查 b 如果 a 是真的,当你有 if(a || b) 它
如果 a 不为真,只会检查 b;否则会在
之后返回检查 a.这就是为什么你可以逃脱 if(object != null &&
object.Property == 东西).在 VB 中,And 和 Or 逻辑是 NOT
短路,您必须为此使用 AndAlso 和 OrElse.

话虽如此,我会假设两者是等价的,但可以
是一个微妙的区别,我会听从别人的意见.
3 月 26 日下午 6:31,"TheLostLeaf"<e...@canyondigital.com 写道:
你好,

有谁知道这两个代码段是否会以相同的方式运行.

例如,如果第一个条件失败,是否需要检查
第二个?

if (MyList.Count 0 && CheckDate) {

//做点什么...

}



if(MyList.Count)
{
如果(检查日期)
{
//做点什么...
}

}

公共布尔 CheckDate()
{
返回真;

}- 隐藏引用的文字-

- 显示引用的文字 -


谢谢!

我想仔细检查,但这是有道理的.更少的代码总是
更好地获得相同的结果.


TheLostLeaf <er**@canyondigital.com 写道:
谢谢!

我想仔细检查,但这是有道理的.更少的代码总是
更好地获得相同的结果.
请注意,只有 &&和 ||正在短路.如果你改变你的
条件

if (MyList.Count 0 & CheckDate)

它总是会测试这两个条件.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet 博客:http://www.msmvps.com/jon.skeet
如果回群,请不要也给我发邮件

本文地址:https://www.itbaoku.cn/post/1050420.html