Komplexe boolesche Logik
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 9 von 66.
Boolesche Logik kann komplex werden, wenn mehrere Bedingungen kombiniert werden. Das Verständnis der Operatorpriorität und die Verwendung von Klammern hilft, klare und korrekte Ausdrücke zu schreiben.
Die Reihenfolge der Präzedenz für boolesche Operatoren in C# ist:
- NICHT (!)
- UND (&&)
- ODER (||)
Hier ist ein Beispiel für einen komplexen booleschen Ausdruck:
bool isValid = age >= 18 && (score > 70 || hasPriorExperience) && !isBlacklisted;Verwenden Sie die De-Morganschen Gesetze, um komplexe Negationen zu vereinfachen:
// Anstatt von:
if (!(age >= 18 && score > 70))
{
// Dies ist äquivalent zu:
if (age < 18 || score <= 70)
{
Console.WriteLine("Not eligible");
}
}Kurzschlussevaluierung: Mit && und || wertet C# nur aus, was notwendig ist:
// Wenn user null ist, wertet C# die zweite Bedingung nicht aus
if (user != null && user.IsActive)
{
Console.WriteLine("Active user");
}Verwenden Sie explizite Klammern für Klarheit, auch wenn sie nicht strikt erforderlich sind:
bool result = (isWeekend || isHoliday) && (hour > 10 && hour < 20);Aufgabe
MittelErstelle eine Methode namens determineAccess, die anhand dieser Regeln bestimmt, ob ein Benutzer Zugriff auf ein System hat:
- Nimmt fünf Parameter entgegen:
- isAdmin (bool): Gibt an, ob der Benutzer Administrator ist
- isLoggedIn (bool): Gibt an, ob der Benutzer derzeit angemeldet ist
- timeOfDay (int): Die aktuelle Stunde (0-23)
- isMaintenanceMode (bool): Gibt an, ob sich das System im Wartungsmodus befindet
- hasEmergencyAccess (bool): Gibt an, ob der Benutzer Notfallzugriff hat
- Gibt true zurück, wenn ANY dieser Bedingungen erfüllt ist:
- Der Benutzer ist Administrator AND ist angemeldet
- Die Uhrzeit liegt innerhalb der Geschäftszeiten (9-17 einschließlich) AND der Benutzer ist angemeldet AND das System befindet sich NOT im Wartungsmodus
- Der Benutzer hat Notfallzugriff
Probier es selbst
public class DetermineAccess
{
// Implementieren Sie die determineAccess-Methode
public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
{
// Schreiben Sie Ihren Code hier
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen 2D-Arrays2D-Arrays deklarieren und initialisierenAuf Elemente von 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysGezackte ArraysHäufige MatrixoperationenZusammenfassung – Mehrdimensionale Arrays4Techniken zur Ablaufsteuerung
Frühe RückgabenWächterklauselnSprunganweisungen (goto)Break und ContinueVerschachtelte Bedingungen abflachen7Logische Operatoren – Fortgeschritten
KurzschlussauswertungBedingte logische OperatorenOperatorrangfolgeRückblick – Erweiterte Operatoren2Fortgeschrittene Entscheidungslogik
Mehrere BedingungenKomplexe boolesche LogikVergleich: If vs. SwitchVerschachtelte Switch-AnweisungenRückblick – Fortgeschrittene Entscheidungen5Fehlerbehandlung mit Exceptions
Grundlagen von Try-CatchException-TypenMehrere Catch-BlöckeArbeiten mit DateienFinally-BlockUsing im Vergleich zu Try-FinallyBenutzerdefinierte ExceptionsZusammenfassung – Fehlerbehandlung3Schleifenverbesserungen
SchleifenleistungKomplexe IterationJeder SchleifentypSchleifen refaktorierenRückblick – Optimierte Schleifen6Behandlung von Nullwerten
Grundlagen von NullreferenzenNullable WerttypenMuster zur NullprüfungDefensive ProgrammierungZusammenfassung – NullsicherheitÜbe selbstständig: Online-C#-Compiler