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
Lepaskan: 2025-01-29 08:51:09
asal
729 orang telah melayarinya

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>
Salin selepas log masuk
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>
Salin selepas log masuk
untuk kaedah yang mengembalikan nilai:

<code class="language-csharp">int result = RetryHelper.Execute(() => SomeMethodReturningInt(), TimeSpan.FromMilliseconds(500), 5);</code>
Salin selepas log masuk
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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan