C和C++中关于逻辑运算的短路问题很清楚明了,C#中也有类似的现象,这里就不再赘述了,要说说的是非短路计算。
C#中的两组逻辑运算符&&和||也会造成短路的,不过有些人不知道的是,还有非短路逻辑运算符&和|(没错,就是位运算中的按位与和按位或),这两种会将布尔运算计算完成,即使后面的值对结果没有任何影响。如下:
VS2010能够自动检测到无法访问的表达式代码,并给出提示,由于这既不是语法错误(编译时错误),也不是逻辑错误(运行时错误),IDE仅仅给出提示。
运行该段代码如下:
可见后面一个并没有被短路。对于||和|也有类似的效果,测试2008及其以后版本中可行,不知道其他版本的VS是否支持。
评论