Heim >Backend-Entwicklung >C++ >Wie können Lambda -Ausdrücke die Wiederholungslogik in C#vereinfachen?

Wie können Lambda -Ausdrücke die Wiederholungslogik in C#vereinfachen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-29 08:51:09756Durchsuche

How Can Lambda Expressions Simplify Retry Logic in C#?

Streamlining C# Logik mit Lambda -Ausdrücken

wiederholen

In 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn