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:
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.
Es ist besser, die Absicht der Operation zu erfassen, anstatt die booleschen Werte explizit zu überprüfen.
Zum Beispiel:
%Vor%Sie können eine Karnaugh-Map verwenden, um Ihre Gleichungen zu reduzieren und weniger Wenns zu haben.
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
Sie könnten den Nachschlagetabellen-Hinweis von @Adriano eingeben, vorausgesetzt, Sie haben lookup_table
mit Werten für index [0..8] gefüllt:
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%
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:
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.
Tags und Links c# if-statement boolean