2016-05-09 8 views
2

私は列挙型を持っており、条件が満たされたときに2つの値を交互に入れたいと思います。現時点では、私は値を入れ替えるのにif/elseを使用していますが、これを行うにはもっと良い方法がありますか?2つの列挙値の間の代入

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

'myenum = myEnum == MyEnum.Val1? MyEnum.Val2:MyEnum.Val1' –

+3

列挙型は整数にキャストできます。したがって、列挙型の値を1と-1に設定してから、-1(または任意の正の数または負の数)を単純に掛けることができます。 – jdweng

+1

おそらくブール値があなたの目的に適しています。 'myBoolean =!myBoolean' – RomCoo

答えて

0

あなたには、いくつかの数学のトリックを行うことができますmyEnumの値に依存しますが、常に?演算子を使用することができます

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

の場合:

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

2つの値の間で交互通常のXOR-INGを意味するので、これはどう:

myEnum ^= MyEnum.Val1^MyEnum.Val2; 
+0

?:読みやすいです! – user3791372

+0

@ user3791372しかし、上記の方が速いです! ?:は自明である。 –

関連する問題