用通俗易懂的语言解释C#中 | 和 || 的区别是什么?

44

好的,我已经多次阅读了这方面的内容,但我仍然没有听到一种清晰、易于理解(而且易于记忆)的学习以下两个概念之间区别的方法:

if (x | y)
并且。
if (x || y)

在C#的上下文中,...能否有人帮我学习这个基本真理,以及C#如何特别处理它们(因为它们似乎做了同样的事情)。如果一个给定的代码片段在它们之间的差异是无关紧要的,那么我应该默认使用哪个作为最佳实践?

11个回答

1
尽管已经有正确的答案,但我想加上一个真正的门外汉的回答,因为在这个网站上我经常感觉像是那样。另外,我会添加 & vs. && 的例子,因为它是相同的概念。 | vs ||
基本上,当您只想在第一部分为FALSE时评估第二部分时,您倾向于使用||。所以这个:
if (func1() || func2()) {func3();}

等同于

if (func1())
{
    func3();
}
else 
{
    if (func2()) {func3();}
}

这可能是节省处理时间的一种方法。如果func2()需要很长时间来处理,那么如果func1()已经为true,您就不希望执行它。

& vs &&

在&与&&的情况下,情况类似,只有在第一部分为TRUE时才会评估第二部分。例如:

if (func1() && func2()) {func3();}

等同于

if (func1())
{
    if (func2()) {func3();}}
}

这是必要的,因为func2()可能依赖于func1()首先为真。如果你使用了&并且func1()评估为false,&仍然会运行func2(),这可能会导致运行时错误。
杰夫·莱曼

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接