&,&&,|,|| 区别

一图流!

string a = "test", b;
a == "test" || b.ToString() == "test"
true
a == "test" | b.ToString() == "test"
Object reference not set to an instance of an object.

a!="test" && b.ToString()!="test"
false
a!="test" & b.ToString()!="test"
Object reference not set to an instance of an object.

如上面所示 &&,|| 为逻辑与或, 使用了短路计算(short circuit evaluation), 即当第一个条件可以判断出结果时, 不考虑后面的条件. 比如 a && b, 当 a=false时, 返回false,不会查看b的值.

而&,| 适用于bool 和 int, 返回的是其按位与或的结果. 无论第一个条件如何, 都会计算第二个条件, 然后得出结果.

参考(好吧.其实我是查找短路的时候找到这篇wiki的, 没法往下写了,人家都写好了..): https://en.wikipedia.org/wiki/Short-circuit_evaluation