C#中switch語句用法


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 = ABC都輸出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;
}

輸出100101

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM