What is the proper way to express the AND NOT operator in C#?
本问题已经有最佳答案,请猛点这里访问。
我和一个同事讨论了用什么风格来表达C中的非条件。虽然这两种方法都有效,但我们对运算符的样式不一致。
他这么说!是首选的方式。例如:
1 | db.Widget.Where(w => w.Name =="Foo" && !w.IsBlue); |
我认为这是可行的,但是&;!会工作。例如:
1 | db.Widget.Where(w => w.Name =="Foo" &! w.IsBlue); |
我以前有一本关于C风格的书,但不记得看到这本书了。这有什么用?
它们都是differentlogical and operators。&;&;是逻辑与运算符,而对于整型,则计算其操作数的逻辑位与。对于布尔操作数,&;计算其操作数的逻辑和,请参阅。一个区别是,
在这种特殊情况下,逻辑和更容易理解,因为它最常用于逻辑和。如前所述,&;将短路条件,例如,如果
1 2 3 4 5 6 7 | int a = 1; int b = 2; int c = 3; bool r = a == 2 && ++b == 2; Console.WriteLine(b); r = a == 2 & ++b == 2; Console.WriteLine(b); |
产量
1 2 | 2 3 |
在上面的例子中,使用
在我看来,在这里使用&;&;更合适,因为它可以使代码更容易理解以及短路。