在使用了
以下微软文档提到了这一点:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/switch 在我的代码中:
default
后,控制流应该自动退出switch loop
。但是在C#中需要使用break语句?为什么在C#中控制流在default
后没有自动退出switch loop
?以下微软文档提到了这一点:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/switch 在我的代码中:
using System;
class Program {
static void Main() {
Console.WriteLine("Enter a number between 1 and 10");
int num;
bool validity = int.TryParse(Console.ReadLine(), out num);
if(validity==true) {
switch(num) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
Console.WriteLine("You have entered {0}", num);
break;
default:
Console.WriteLine("You have not entered a number between 1 and 10");
//break; This part is commented
}
}
else {
Console.WriteLine("Please make a valid input");
}
}
}
我收到了这个错误信息 -
(23,5): error CS8070: 控制流不能从最后一个case标签('default:')中跳出
但是如果取消注释break部分,代码将正常工作。
}
之后的代码,这使得所有的case
语句更加一致,容易进行重新排序。在此情况下,default
语句排在最后只是巧合。 - Jon Skeetbreak
不是实现此目的的唯一方法。throw new Exception();
也会防止控制流到达}
。那么您就不需要使用break
。 - bornfromaneggbreak
语句通常可以帮助重构和一致性,如果最后一个标签不是“default”,这是正确的。他们似乎没有解释为什么语言中没有为“default”提供异常。 - Panzercrisis