Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah ekspresi Lambda dapat memudahkan logik semula dalam C#?

Bagaimanakah ekspresi Lambda dapat memudahkan logik semula dalam C#?

Barbara Streisand
Barbara Streisandasal
2025-01-29 08:51:09775semak imbas

How Can Lambda Expressions Simplify Retry Logic in C#?

Streamlining C# Retry Logic dengan Ekspresi Lambda

Dalam C#, operasi semula adalah tugas yang sama. Kaedah tradisional sering melibatkan gelung semula yang jelas, yang membawa kepada kod yang tidak dapat diguna semula dan kurang boleh diguna semula. Ekspresi Lambda menawarkan penyelesaian yang lebih elegan.

Contoh ini menunjukkan pembalut semula semula berasaskan Lambda yang boleh diguna semula:

<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>
Kelas

ini merangkumi logik semula. Anda memberikan tindakan (atau fungsi) untuk mencuba semula, selang semula, dan bilangan percubaan maksimum. RetryHelper

Penggunaan adalah mudah:

<code class="language-csharp">RetryHelper.Execute(() => SomeMethodThatMightFail(), TimeSpan.FromSeconds(2)); </code>
untuk kaedah yang mengembalikan nilai:

<code class="language-csharp">int result = RetryHelper.Execute(() => SomeMethodReturningInt(), TimeSpan.FromMilliseconds(500), 5);</code>
Satu beban yang tidak segerak boleh ditambah dengan mudah untuk operasi asynchronous. Pendekatan ini memberikan penyelesaian ringkas dan boleh diguna semula untuk mengendalikan logik semula dalam C#.

Atas ialah kandungan terperinci Bagaimanakah ekspresi Lambda dapat memudahkan logik semula dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn