C# if else vs if or vs switch case
本问题已经有最佳答案,请猛点这里访问。
我试图使我的代码更快,我有很多if-else和if-or-in。我知道如果你有超过5个if/箱的话,切换箱会更快。那么,
1 2 3 4 5 6 7 8 | if (item.Datum.Substring(5, 5) =="06-20" || item.Datum.Substring(5, 5) =="06-21") { Something } else if item.Datum.Substring(5, 5) =="06-22" || item.Datum.Substring(5, 5) =="06-23") { Something } |
或
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | if (item.Datum.Substring(5, 5) =="06-20") { Something } else if (item.Datum.Substring(5, 5) =="06-21") { Something } else if (item.Datum.Substring(5, 5) =="06-22") { Something } else if (item.Datum.Substring(5, 5) =="06-23") { Something } |
还是我只带着开关盒走?
1 2 3 4 5 6 7 8 9 | switch(item.Datum.Substring(5, 5)) { case"06-20","06,21": Something break; case"06-22","06,23": Something break; } |
在某些情况下,等效switch语句比if语句或if语句链慢。使用频率启发式,可以在许多程序中使用if语句优化快速路径。
查看此链接,您将发现两个不同的比较
http://www.dotnetperls.com/if-switch-performance
我会去寻找:
1 2 3 4 5 6 7 8 9 10 11 | dayStr = item.Datum.Substring(5, 5)) day = 'split '-', ',' and convert to int' switch day: { case 20: // Fall through case 21: // Do something case 22: ... } |
当这样一个问题出现时,我的哲学是:你写得越少越好。
为什么要这样的哲学?一个词:可测试性。每次添加行时,都必须确保对其行为进行测试。我不特别喜欢