2017-06-27 6 views
4

Ich versuche zu prüfen, ob eine Enum-Option in den verfügbaren Optionen enthalten ist. Es ist ein bisschen schwierig für mich, es auf Englisch zu erklären. Hier ist der Code:C# check enum ist in Optionen enthalten

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


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

Ich versuche, wenn die ich varliable enthalten ist, in den verfügbar Variable zu überprüfen. Ich weiß, es kann getan werden, weil es auch mit den RegexOptions verwendet wird.

+1

Es ist kein 100% genaues Duplikat, aber es beantwortet Ihre Frage vollständig. –

Antwort

9

Der einfachste Weg ist & zu verwenden:

if ((available & me) != 0) 

Sie hier 0 verwenden können, da es eine implizite Konvertierung von der Konstante 0 in jedem Enum ist, was sehr praktisch ist.

Beachten Sie, dass Ihre Enum sollte allerdings mit dem Flags Attribut und entsprechende bitorientierter Werte definiert werden:

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

Wenn Sie wollen es nicht machen einen Flags Enum, sollten Sie eine List<Fruit> oder ähnliches verwenden um die verfügbaren Optionen zu speichern.

+1

Werfen Sie einen Blick auf die [FlagsAttribute] (https://msdn.microsoft.com/en-us/library/system.flagsattribute.aspx) für Ihre Aufzählung. Dadurch können Sie auch die [HasFlag-Methode] (https://msdn.microsoft.com/en-us/library/system.enum.hasflag.aspx) verwenden. –

+0

vielen Dank, das ist genau das, was ich brauchte – djsony90