我们什么时候在C#中使用单操作符和双操作符?

When shall we use single and double operator in C#?

本问题已经有最佳答案,请猛点这里访问。

通常,当我们使用条件逻辑运算符(如&&||时,我们可以这样使用它:

1
2
3
4
5
6
7
if (x > y && y > z)
    //codes

OR

if (x > y || x > z)
    //codes

但当我在msdn上读到一页时,他们提到我们可以使用&|。我测试过,它编译时没有给出任何编译错误。

那么我们什么时候可以用一个像&|这样的逻辑运算符来代替&&||


单个的是位运算符,而双个是逻辑运算符:

  • 如果你和bool合作,坚持&&||
  • 如果要进行位运算,请使用&|

有关位运算符的详细信息,请参阅维基百科,例如:

1
5 & 3 => 1

原因是1是5和3共享的2的唯一力量:

1
2
3
4
  101 (5)
& 011 (3)
  -------
  001 (1)

希望这有帮助。


双布尔运算符是短路运算符;这意味着如果第一个操作数失败,它将不会检查其他操作数;这被认为更有效。

编辑:

一些投反对票的人鼓励我加上这一部分,

尽管&;operator是位运算符,但它可以用作逻辑运算符,在这种情况下,两个操作数都将在不短路的情况下进行计算

参考msdn:http://msdn.microsoft.com/en-us/library/sbf85k1c.aspx

"二进制运算符是为整型和bool预定义的。对于整数类型,&;计算其操作数的逻辑位和。对于布尔操作数,&;计算其操作数的逻辑和;也就是说,如果且仅当其两个操作数都为真,则结果为真。"

所以这个问题是含蓄地问两个操作符之间的区别,它们都能完成任务,但他想知道选择哪个操作符。

我理解的问题是,要将(&;)和(&;&;)区分为逻辑运算符,而不是单独列出每个运算符的功能。

因此,我反对滥用下等选民