Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在两个枚举值之间交替_C#_Enums - Fatal编程技术网

C# 在两个枚举值之间交替

C# 在两个枚举值之间交替,c#,enums,C#,Enums,我有一个枚举,当满足条件时,我想在两个值之间交替。目前,我正在使用if/else来交换值,但是有没有更好的单行方法呢 if (myEnum == MyEnum.Val1) myEnum = MyEnum.Val2 else myEnum = MyEnum.Val1; 根据myEnum的值,您可以使用一些数学技巧,但始终可以使用?运算符: myEnum = myEnum == MyEnum.Val1 ? MyEnum.Val2 : MyEnum.Val1; 您可以使用三元

我有一个枚举,当满足条件时,我想在两个值之间交替。目前,我正在使用
if
/
else
来交换值,但是有没有更好的单行方法呢

if (myEnum == MyEnum.Val1) 
    myEnum = MyEnum.Val2
else 
    myEnum = MyEnum.Val1; 

根据
myEnum
的值,您可以使用一些数学技巧,但始终可以使用
运算符:

myEnum = myEnum == MyEnum.Val1 ? MyEnum.Val2 : MyEnum.Val1;

您可以使用三元操作:

如果需要,可以添加括号以提高可读性:

myEnum = (myEnum == MyEnum.Val1) ? MyEnum.Val2 : MyEnum.Val1;

两个值之间的交替通常意味着xor ing,那么这个呢:

myEnum ^= MyEnum.Val1 ^ MyEnum.Val2;

myenum=myenum==myenum.Val1?MyEnum.Val2:MyEnum.Val1
枚举可以强制转换为整数。因此,您可以将枚举值设置为1和-1,然后简单地乘以-1(或任何正/负数)!myBoolean@user3791372但上面的速度更快!和?:是微不足道的。
myEnum ^= MyEnum.Val1 ^ MyEnum.Val2;