72 Stimmen

Überprüfen, ob eine Variable in einer Ad-hoc-Liste von Werten enthalten ist

Gibt es eine kürzere Möglichkeit, etwas wie dies zu schreiben:

if(x==1 || x==2 || x==3) // do something

Was ich suche, ist etwas wie dies:

if(x.in((1,2,3)) // do something

0voto

Isaac Punkte 10912

Ich rate hier vollkommen, korrigiere den Code, wenn ich falsch liege:

(new int[]{1,2,3}).IndexOf(x)>-1

-4voto

Yair Nevet Punkte 12396

Sie können eine einfache Dictionary erstellen, die als Entscheidungstabelle für das Problem verwendet wird:

        //Erstellen Sie Ihre Entscheidungstabelle Dictionary
        Action actionToPerform1 = () => Console.WriteLine("Die Nummer ist in Ordnung");
        Action actionToPerform2 = () => Console.WriteLine("Die Nummer ist nicht in Ordnung");
        var decisionTable = new Dictionary
            {
                {1, actionToPerform1},
                {2, actionToPerform1},
                {3, actionToPerform1},
                {4, actionToPerform2},
                {5, actionToPerform2},
                {6, actionToPerform2}
            };

        //Je nach gegebener Nummer wird die richtige *Aktion* aufgerufen.
        int dieZuTestendeNummer = 3;
        decisionTable[dieZuTestendeNummer](); //In diesem Fall wird actionToPerform1 aufgerufen.

Nachdem Sie Ihr Dictionary initialisiert haben, bleibt nur noch Folgendes zu tun:

decisionTable[dieZuTestendeNummer]();

-4voto

Tigerfink Punkte 69

Diese Antwort bezieht sich auf eine mögliche zukünftige Version von C# ;-) Wenn Sie eine Umstellung auf Visual Basic in Betracht ziehen oder wenn Microsoft sich schließlich dazu entscheidet, die Select-Case-Anweisung in C# einzuführen, würde es so aussehen:

Select Case X
    Case 1, 2, 3
    ...
End Select

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X