Die beste Möglichkeit, mehrere boolesche Bedingungen in C # if-Anweisungen zu überprüfen

8

Ich habe 3 booleans auf meinem Code (C #) und eine int32 -Eigenschaft, die davon abhängt, welche booleans true und false sind. Was ist der beste Weg, dies auf eine andere Weise zu erreichen als wenn Aussagen wie:

%Vor%

EDIT: Die 3 booleans müssen jede mögliche Kombination haben, um den int32 Wert zu setzen.

EDIT 2: Der Wert von "d" kann für zwei verschiedene boolesche Vergleiche gleich sein.

    
Phoenix_uy 09.04.2013, 14:43
quelle

5 Antworten

25

Es ist besser, die Absicht der Operation zu erfassen, anstatt die booleschen Werte explizit zu überprüfen.

Zum Beispiel:

%Vor%     
Davin Tryon 09.04.2013, 14:47
quelle
9

Sie können eine Karnaugh-Map verwenden, um Ihre Gleichungen zu reduzieren und weniger Wenns zu haben.

Ссылка

    
SamFisher83 09.04.2013 14:49
quelle
2

Ich denke, was Sie jetzt tun, ist vollkommen in Ordnung, und alle anderen Lösungen wären auf Vorlieben zurückzuführen.

Meine Präferenz, wo es gilt, wäre, die Kontrollen nach Möglichkeit zu trennen.

%Vor%

Dies ist nützlich, wenn Sie bestimmte Voraussetzungen überprüfen müssen, bevor Sie eine Funktion ausgeben, etwa wenn der Benutzer sich angemeldet hat, wenn ein Parameter existiert und sich im richtigen Kontext befindet, zusammen mit anderen Elementen.

Wie ich schon sagte, könnte das nicht zutreffen, aber ich wollte nur meine Meinung äußern

    
PsyKzz 09.04.2013 14:48
quelle
2

Sie könnten den Nachschlagetabellen-Hinweis von @Adriano eingeben, vorausgesetzt, Sie haben lookup_table mit Werten für index [0..8] gefüllt:

%Vor%

Bearbeiten Der EDIT der Frage machte das irrelevant: Was soll das heißen?

Wenn es die Anzahl der falschen Werte ist (möglich aus dem Beispielcode), machen Sie es

%Vor%

    
sehe 09.04.2013 14:46
quelle
0

Ich sehe nichts falsch mit Ihrer Vorgehensweise, aber wenn die Ausgabe für mehrere Bedingungen gleich ist, können Sie vereinfachen Erstellen einer Wahrheitstabelle und Vereinfachung der Bedingungen.

Wenn beispielsweise d immer 0 sein sollte a falsch ist, können Sie Folgendes vereinfachen:

%Vor%

Oder, wenn ein mathematisches Muster vorhanden ist (z. B. a , b und c stellen die drei Ziffern einer Binärzahl dar), könnten Sie Bit-Arithmetik durchführen.

Wenn Sie jedoch 8 eindeutige Ergebnisse haben (eins für jede Kombination von a , b und c ), dann ist Ihre Methode in Ordnung.

    
D Stanley 09.04.2013 14:48
quelle

Tags und Links