在c#中使用switch语句和if/else语句的优缺点是什么?除了代码的外观,我无法想象有这么大的区别。
是否有任何原因导致最终的IL或相关的运行时性能会有根本的不同?
相关:什么是更快,开关上字符串或elseif上类型?
在c#中使用switch语句和if/else语句的优缺点是什么?除了代码的外观,我无法想象有这么大的区别。
是否有任何原因导致最终的IL或相关的运行时性能会有根本的不同?
相关:什么是更快,开关上字符串或elseif上类型?
当前回答
switch语句基本上是相等的比较。键盘事件比switch语句有很大的优势,当代码易于编写和阅读时,if elseif语句会,缺少{括号}也可能会带来麻烦。
char abc;
switch(abc)
{
case a: break;
case b: break;
case c: break;
case d: break;
}
如果(theAmountOfApples大于5 && theAmountOfApples小于10)保存苹果,则使用if elseif语句非常适合多个解决方案 否则如果(theAmountOfApples大于10 || theAmountOfApples == 100)出售你的苹果。我不会写c#或c++,但我在学习java之前学过它,它们是很接近的语言。
其他回答
我认为Switch比If条件更快 看看是否有这样一个程序:
写一个程序,输入任意数字(1- 99之间),并检查它在哪个槽a) 1- 9,然后槽1 b) 11 - 19,然后槽2 c) 21-29,然后槽3,直到89-99
然后,如果你有许多条件,但儿子切换情况下,你必须只是类型
开关(no /10) case 0 = 1-9,case 1 = 11-19,以此类推
这将是如此简单
还有很多这样的例子!
switch语句基本上是相等的比较。键盘事件比switch语句有很大的优势,当代码易于编写和阅读时,if elseif语句会,缺少{括号}也可能会带来麻烦。
char abc;
switch(abc)
{
case a: break;
case b: break;
case c: break;
case d: break;
}
如果(theAmountOfApples大于5 && theAmountOfApples小于10)保存苹果,则使用if elseif语句非常适合多个解决方案 否则如果(theAmountOfApples大于10 || theAmountOfApples == 100)出售你的苹果。我不会写c#或c++,但我在学习java之前学过它,它们是很接近的语言。
我的意见。大多数情况下,如果性能不是标准,那么代码的可读性就更重要了。如果If /else语句的数量太多,则使用switch语句会更好。
实际上,switch语句更有效。编译器会将其优化为一个查找表,而使用if/else语句则不行。缺点是switch语句不能与变量值一起使用。
你不能:
switch(variable)
{
case someVariable:
break;
default:
break;
}
它必须是:
switch(variable)
{
case CONSTANT_VALUE:
break;
default:
break;
}
我刚刚注意到的是,你可以结合if/else和切换语句!在需要检查先决条件时非常有用。
if (string.IsNullOrEmpty(line))
{
//skip empty lines
}
else switch (line.Substring(0,1))
{
case "1":
Console.WriteLine(line);
break;
case "9":
Console.WriteLine(line);
break;
default:
break;
}