Frühe Rückgaben
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 18 von 66.
Frühe Rückgaben sind eine Technik, bei der wir eine Methode verlassen, sobald wir die Antwort haben oder auf eine ungültige Bedingung stoßen, anstatt Bedingungen zu verschachteln.
Vergleichen wir zwei Ansätze zur Validierung eines Benutzernamens:
Ohne frühe Rückgaben (verschachtelte Bedingungen):
public bool ValidateUsername(string username)
{
bool isValid = false;
if (username != null)
{
if (username.Length >= 3)
{
if (username.Length <= 20)
{
isValid = true;
}
}
}
return isValid;
}Mit vorzeitigen Rückgaben:
public bool ValidateUsername(string username)
{
// Vorzeitig zurückkehren, wenn username null ist
if (username == null)
return false;
// Vorzeitig zurückkehren, wenn username zu kurz ist
if (username.Length < 3)
return false;
// Vorzeitig zurückkehren, wenn username zu lang ist
if (username.Length > 20)
return false;
// Wenn wir hier ankommen, ist username gültig
return true;
}Frühe Rückgaben machen den Code lesbarer und verringern die Einrückungsebenen.
Aufgabe
EinfachSchreibe eine Methode namens ProcessPayment, die anhand der folgenden Bedingungen bestimmt, ob eine Zahlung verarbeitet werden kann:
- Der Zahlungsbetrag muss positiv sein
- Der Kontostand muss ausreichen
- Das Konto darf nicht gesperrt sein
Verwende vorzeitige Rückgaben, um jede Bedingung zu prüfen und die entsprechenden Fehlermeldungen zurückzugeben.
Die Methode sollte:
- Drei Parameter entgegennehmen:
decimal paymentAmount,decimal accountBalanceundbool isAccountLocked - Eine Zeichenfolge zurückgeben, die entweder "Payment processed successfully" oder eine Fehlermeldung enthält
- Vorzeitige Rückgaben zur Validierung verwenden
Gib Fehlermeldungen genau in diesen Formaten aus:
- "Error: Payment amount must be positive"
- "Error: Insufficient funds"
- "Error: Account is locked"
Probier es selbst
using System;
public class Program
{
public static string ProcessPayment(decimal paymentAmount, decimal accountBalance, bool isAccountLocked)
{
// Schreibe deinen Code hier
}
public static void Main(string[] args)
{
decimal paymentAmount = decimal.Parse(Console.ReadLine());
decimal accountBalance = decimal.Parse(Console.ReadLine());
bool isAccountLocked = bool.Parse(Console.ReadLine());
string result = ProcessPayment(paymentAmount, accountBalance, isAccountLocked);
Console.WriteLine(result);
}
}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