2017-06-27 28 views
4

我想檢查是否在可用選項中包含枚舉選項。 我用英語解釋它有點困難。 下面的代碼:c#檢查枚舉包含在選項

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


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

我試圖檢查 varliable包含在可用變量。 我知道它可以完成,因爲它也與RegexOptions一起使用。

+1

這不是100%完全重複,但它完全回答你的問題。 –

回答

9

最簡單的方法是使用&

if ((available & me) != 0) 

你可以在這裏使用0作爲有從常數0到任何枚舉,這是非常方便的隱式轉換。您應該枚舉使用Flags屬性和相應的面向比特值雖然被定義

注:

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

如果你不想讓它Flags枚舉,你應該使用一個List<Fruit>或類似存儲可用的選項。

+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