我(仍在)学习 C# - 我认为我理解 &
之间的区别& &&
以及|
& ||
...
但是,在阅读了另一篇指南之后,很明显我不明白。
我写了一个小真值表,正如我所想,它们返回相同。从我读到的内容来看,使用双符号听起来像是一个更好的解决方案,但我对它们之间的区别有点困惑,想知道是否有人可以解释/举例说明为什么/何时你会使用一个而不是另一个 - 我试过了阅读 MSDN 示例,但它让我比刚开始时更加困惑!
(而且,如果有人能想出更好的标题,请随意更改它...写一个很尴尬!)
最佳答案
& 有两种不同的用法:按位“与”和逻辑“与”
逻辑 & 和 && 之间的区别仅在于,如果您使用 &,即使第一个表达式已经为假,也会对第二个表达式求值。如果您想在循环中初始化两个变量,这可能(例如)很有趣:
if ((first = (i == 7)) & (second = (j == 10))) { //do something }
如果你使用这种语法,first 和 second 总是有一个值,如果你使用
if ((first = (i == 7)) && (second = (j == 10))) { //do something }
可能只有first在求值后才有值。
对于|也是一样的和||:如果你使用|,两个表达式总是被评估,如果你使用||可能只评估第一个表达式,如果第一个表达式为真,就会出现这种情况。
相比之下,在其他应用程序中 && 可能是更好的选择。如果 myNumber 是 int?
类型,你可以有类似的东西
if (myNumber != null && myNumber.Value == 7)
这只会首先计算 myNumber != null
,如果 null 检查没问题,它只会计算第二个表达式。
if (myNumber != null & myNumber.Value == 7)
如果 myNumber 为 null,将在第二个表达式的计算期间以 NullPointerException 结束。因此,您将在此上下文中使用 &&。
关于c# - 急切操作和短路操作的区别? (| 与 || 和 & 与 &&),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4838171/