使用=的条件逻辑运算符

时间:2016-07-18 09:54:06

标签: c#

我知道以下代码将执行左右表达式:

bool myBool = true;
myBool &= Foo();

有没有办法以相同的方式(一种&&=)代码生成:

bool myBool = true;
myBool = myBool &&  Foo();

而不是

myBool = myBool & Foo();

4 个答案:

答案 0 :(得分:3)

C#中没有运算符&&=。所以你不能这样做。

有关所有运营商的列表,请查看MSDN

答案 1 :(得分:2)

如果您希望执行Foo(),只需交换

  bool myBool = ...;
  myBool = Foo() && myBool;

答案 2 :(得分:1)

这会回答你的问题吗? (并不是很清楚)

bool myBool = true;
myBool = myBool ||  (!myBool && Foo());

仅当myBoolfalse时才会执行该功能

答案 3 :(得分:0)

如前所述,没有&&= - 运算符,因此您无法超载。对于可以为任何类型重载的运算符列表,请参阅here。对于assignement-operators,根本没有定义过载:

  

分配运算符不能重载,但是+ =,例如,使用+来计算,可以重载。

因此,使用myBool && Foo();的当前方法是可行的方法。

this post所述,IL &=&相等,前者只是后者的语法糖。因此,创建这样的运算符没有任何实际价值,因为它的所有用途都是去掉几个字符。