【发布时间】:2012-03-17 10:04:52
【问题描述】:
我在 Visual Studio 中创建了一个 C# 方法,它只包含一个 switch 语句,每个 case 返回一个值。按照个人习惯,我放了类似下面的代码:
private string SwitchMethod(int num)
{
switch (num)
{
case 0:
return "result 1";
case 1:
return "result 2";
case 2:
return "result 3";
}
return "no result";
}
我的问题是:哪个代码会有更好的性能?上面或下面的代码,还是相同的?为什么?
我会假设由于编译器优化...它们可能只是相同...但我真的不知道。
private string SwitchMethod(int num)
{
switch (num)
{
case 0:
return "result 1";
case 1:
return "result 2";
case 2:
return "result 3";
default:
return "no result";
}
}
修订: 看来我应该更具体一点:编译时......是否会生成效率较低的代码?
我意识到性能上的差异可能微不足道......我真的很好奇。
【问题讨论】:
-
这是相当主观的。我避免从方法或函数中有多个退出点,但 YMMV。如果你真的很好奇,看看 IL。
-
那编译?我不在我的编译器前面,但我几乎可以肯定需要一个默认值。
-
如果您真的认为它不会发生,则默认抛出“不应该到达这里”的异常
-
需要
default或switch()之后的额外返回。 -
好的,现在你已经修复了你的代码。而且您已经很好地编写了两种方式的代码。当你运行它们时,它们的表现如何?
标签: c# performance switch-statement