Sie könnten Ihre booleschen Werte in eine bool
Sequenz einfügen und dann LINQ anwenden:
Für nur zwei booleans, exklusiv oder wird viel einfacher:
%Vor% Bearbeiten Um einen On-Demand-Evaluierungskurzschluss zu erreichen, müssen wir unsere bool
-Sequenz in eine Func<bool>
-Sequenz (wo jedes Element steht) einstufen ein Funktionsdelegat, der die Bewertung einer Bedingung kapselt:
Das obige Snippet setzt die Existenz eines auf Prädikat basierenden IndexOf
-Operators voraus, der unter der aktuellen Version von LINQ nicht verfügbar ist, aber als eine Erweiterungsmethode wie folgt definiert werden kann:
Beispieldaten zum Testen (ein Haltepunkt kann für jedes false
oder true
festgelegt werden, um der Auswertung zu folgen):
Ich denke, das würde den Trick machen
%Vor% Wenn ich nicht falsch darüber nachgedacht habe, wird if
gleich wie i > 1
falsch sein. Wenn i
niemals inkrementiert wird und wir die letzte Bedingung erreichen, wird falsch sein, da i == 0
Die meisten dieser Antworten werden funktionieren und "gute Leistung" haben. Aber die einfachste Antwort ist:
%Vor%Am Ende wirst du A / B / C mehr als einmal auswerten, also ist das wirklich nur nützlich, wenn du einfache Bools hast.
Tags und Links c# if-statement