私は列挙型を持っており、条件が満たされたときに2つの値を交互に入れたいと思います。現時点では、私は値を入れ替えるのにif
/else
を使用していますが、これを行うにはもっと良い方法がありますか?2つの列挙値の間の代入
if (myEnum == MyEnum.Val1)
myEnum = MyEnum.Val2
else
myEnum = MyEnum.Val1;
私は列挙型を持っており、条件が満たされたときに2つの値を交互に入れたいと思います。現時点では、私は値を入れ替えるのにif
/else
を使用していますが、これを行うにはもっと良い方法がありますか?2つの列挙値の間の代入
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;
あなたは三項演算https://msdn.microsoft.com/en-us/library/zakwfxx4(v=vs.90).aspxを使用することができますがあなたは、可読性のために角括弧を追加します:
myEnum = (myEnum == MyEnum.Val1) ? MyEnum.Val2 : MyEnum.Val1;
2つの値の間で交互通常のXOR-INGを意味するので、これはどう:
myEnum ^= MyEnum.Val1^MyEnum.Val2;
?:読みやすいです! – user3791372
@ user3791372しかし、上記の方が速いです! ?:は自明である。 –
'myenum = myEnum == MyEnum.Val1? MyEnum.Val2:MyEnum.Val1' –
列挙型は整数にキャストできます。したがって、列挙型の値を1と-1に設定してから、-1(または任意の正の数または負の数)を単純に掛けることができます。 – jdweng
おそらくブール値があなたの目的に適しています。 'myBoolean =!myBoolean' – RomCoo