2017-06-27 5 views
4

利用可能なオプションにenumオプションが含まれているかどうかを確認しようとしています。 英語で説明するのはちょっと難しいです。私は varliableが利用可能変数に含まれているかどうかを確認しようとしているc#check enumがオプションに含まれています

public enum Fruits 
{ 
    Apple, 
    Orange, 
    Grape, 
    Ananas, 
    Banana 
} 


var available = Fruits.Apple | Fruits.Orange | Fruits.Banana; 
var me = Fruits.Orange; 

: は、ここでは、コードです。 RegexOptionsでも使用されているので、これを行うことができます。

+1

100%正確な重複ではありませんが、あなたの質問に完全に答えます。 –

答えて

9

最も簡単な方法は、&を使用することです:

if ((available & me) != 0) 

非常に便利である任意の列挙型への一定の0から暗黙の変換がありますとしてあなたがここに0を使用することができます。

[Flags] 
public enum Fruits 
{ 
    Apple = 1 << 0, 
    Orange = 1 << 1, 
    Grape = 1 << 2, 
    Ananas = 1 << 3, 
    Banana = 1 << 4 
} 

あなたはそれFlags列挙したくない場合は、あなたがList<Fruit>または類似を使用する必要がありますあなたの列挙型はしかしFlags属性と適切なビット指向の値を使用して定義されるべきであると

注意利用可能なオプションを格納します。

+1

列挙の[FlagsAttribute](https://msdn.microsoft.com/en-us/library/system.flagsattribute.aspx)を見てください。これにより、[HasFlagメソッド](https://msdn.microsoft.com/en-us/library/system.enum.hasflag.aspx)も使用できます。 –

+0

ありがとう、これはちょうど私が必要なものです – djsony90

関連する問題