Heim >Backend-Entwicklung >C++ >Wie können Lambda -Ausdrücke die Wiederholungslogik in C#vereinfachen?
Streamlining C# Logik mit Lambda -Ausdrücken
wiederholenIn C#ist die Wiederholung von Operationen eine häufige Aufgabe. Traditionelle Methoden beinhalten häufig explizite Wiederholungsschleifen, was zu ausführlichem und weniger wiederverwendbarem Code führt. Lambda -Ausdrücke bieten eine elegantere Lösung.
Dieses Beispiel zeigt eine wiederverwendbare Lambda-basierte Wiederholung:
<code class="language-csharp">public static class RetryHelper { public static void Execute(Action action, TimeSpan retryInterval, int maxAttempts = 3) { Execute(() => { action(); return null; }, retryInterval, maxAttempts); } public static T Execute<T>(Func<T> action, TimeSpan retryInterval, int maxAttempts = 3) { var exceptions = new List<Exception>(); for (int attempt = 0; attempt < maxAttempts; attempt++) { try { return action(); } catch (Exception ex) { exceptions.Add(ex); if (attempt < maxAttempts - 1) { Thread.Sleep(retryInterval); } } } throw new AggregateException("Retry attempts failed.", exceptions); } }</code>
Diese RetryHelper
Klasse verkapselt die Wiederholung der Logik. Sie geben die Aktion (oder Funktion) zur Wiederholung, das Wiederholungsintervall und die maximale Anzahl von Versuchen an.
Verwendung ist einfach:
<code class="language-csharp">RetryHelper.Execute(() => SomeMethodThatMightFail(), TimeSpan.FromSeconds(2)); </code>
für Methoden, die einen Wert zurückgeben:
<code class="language-csharp">int result = RetryHelper.Execute(() => SomeMethodReturningInt(), TimeSpan.FromMilliseconds(500), 5);</code>
Eine asynchrone Überlastung könnte für asynchronen Operationen leicht hinzugefügt werden. Dieser Ansatz bietet eine prägnante und wiederverwendbare Lösung für den Umgang mit Wiederholungslogik in C#.
Das obige ist der detaillierte Inhalt vonWie können Lambda -Ausdrücke die Wiederholungslogik in C#vereinfachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!