1. 程式人生 > >【轉】編寫高質量代碼改善C#程序的157個建議——建議64:為循環增加Tester-Doer模式而不是將try-catch置於循環內

【轉】編寫高質量代碼改善C#程序的157個建議——建議64:為循環增加Tester-Doer模式而不是將try-catch置於循環內

特殊 bsp 處理 註意 輸出 read seconds ise new

建議64:為循環增加Tester-Doer模式而不是將try-catch置於循環內

如果需要在循環中引發異常,你需要特別註意,應為拋出異常是一個相當影響性能的過程。應該盡量在循環當中對異常發生的一些條件進行判斷,然後根據條件進行處理。

做個測試:

            Stopwatch watch = Stopwatch.StartNew();
            int x = 0;
            for (int i = 0; i < 10000; i++)
            {
                try
                {
                    
int j = i / x; } catch { } } Console.WriteLine(watch.ElapsedMilliseconds); watch = Stopwatch.StartNew(); for (int i = 0; i < 10000; i++) { if (x == 0) {
continue; } int j = i / x; } Console.WriteLine(watch.ElapsedMilliseconds); Console.ReadKey();

輸出為:

796

0

以上代碼中,我們預見了代碼肯能會發生DivideByZeroException異常,於是,調正策略,對異常發生的條件進行了特殊處理:Continue讓效率得到了極大的提升。

轉自:《編寫高質量代碼改善C#程序的157個建議》陸敏技

【轉】編寫高質量代碼改善C#程序的157個建議——建議64:為循環增加Tester-Doer模式而不是將try-catch置於循環內