1 不是每一個 case 都需要包含 break。如果 case 語句為空,則可以不包含 break,控制流將會繼續后續的 case,直到遇到break為止。
char grade = 'C';
switch (grade)
{
case 'A':
case 'B':
case 'C': Console.WriteLine("CCC"); break;
case 'D': Console.WriteLine("DDD"); break;
default: Console.WriteLine("無效的成績"); break;
}
無論grad = A
或B
或C
都輸出CCC
2 如果 case 語句中有處理語句,則必須包含 break 或其他跳轉語句。
char grade = 'A';
switch (grade)
{
case 'A': Console.WriteLine("AAA");
case 'B':
case 'C': Console.WriteLine("CCC"); break;
case 'D': Console.WriteLine("DDD"); break;
default: Console.WriteLine("無效的成績"); break;
}
提示錯誤:控制不能從一個case標簽("case 'A':"
)貫穿到另一個case標簽
3 一個 switch 語句可以有一個可選的 default case,出現在 switch 的結尾。default case 可用於在上面所有 case 都不為真時執行一個任務。default case 中的 break 語句不是必需的。
char grade = 'D';
switch (grade)
{
case 'A': Console.WriteLine("AAA"); break;
case 'B':
case 'C': Console.WriteLine("CCC"); break;
case 'D':
default: Console.WriteLine("其他成績"); break;
}
當grade=D
或其他值(不是ABC)
時輸出其他成績
default
語句塊中也必須添加break
4 switch嵌套
int a = 100;
int b = 201;
switch (a)
{
case 100:
Console.WriteLine("100");
switch (b)
{
case 200: Console.WriteLine("200"); break;
case 201: Console.WriteLine("201"); break;
}
break;
case 101:
Console.WriteLine("101");
break;
default:
Console.WriteLine("其他值");
break;
}
輸出100
、101
5 switch與for循環
5.1 break語句用於終止最近的封閉代碼塊,switch中的break不會終止for循環
for(int i = 0; i < 5; i++)
{
switch (i)
{
case 1: Console.Write("111"); break;
case 2: Console.Write("222"); break;
case 3: Console.Write("333"); break;
case 4: Console.Write("444"); break;
default: Console.Write("其他"); break;
}
Console.WriteLine("\t第" + i.ToString() + "次循環");
}
111.png
5.2 continue語句不能單獨在switch中使用,可以在循環內的switch中使用,用於跳過當次循環,直接進入下一次循環。
for(int i = 0; i < 5; i++)
{
switch (i)
{
case 1: Console.Write("111"); break;
case 2: Console.Write("222"); continue; break;
case 3: Console.Write("333"); break;
case 4: Console.Write("444"); break;
default: Console.Write("其他"); break;
}
Console.WriteLine("\t第" + i.ToString() + "次循環");
}
222.png
注意第2次循環
沒有輸出
不建議在switch中使用continue