Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah ekspresi Lambda dapat memudahkan logik semula dalam 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
<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!