编写高质量代码改善C#程序的157个建议——建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写高质量代码改善C#程序的157个建议——建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内相关的知识,希望对你有一定的参考价值。
建议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置于循环内的主要内容,如果未能解决你的问题,请参考以下文章
编写高质量代码改善C#程序的157个建议——建议28:理解延迟求值和主动求值之间的区别
编写高质量代码改善C#程序的157个建议——建议141:不知道该不该用大括号时,就用
编写高质量代码改善C#程序的157个建议——建议52:及时释放资源
编写高质量代码改善C#程序的157个建议——建议41:实现标准的事件模型