Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Sử dụng switch lồng nhau trong C#


Trong C#, bạn có thể dùng một câu lệnh switch bên trong một switch khác. Có thể có switch như một phần của chuỗi câu lệnh của switch bên ngoài. Ngay cả khi hằng case của switch bên trong và bên ngoài có giá trị chung, cũng không xảy ra xung đột.

Cú pháp

switch (ch1)
{
    case 'A':
        Console.WriteLine("A thuộc switch ngoài");
        switch (ch2)
        {
            case 'A':
                Console.WriteLine("A thuộc switch trong");
                break;
            case 'B':
                // code case B bên trong
                break;
        }
        break;
    case 'B':
        // code case B bên ngoài
        break;
}

Ví dụ hoàn chỉnh

using System;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 100;
            int b = 200;
            
            switch (a)
            {
                case 100:
                    Console.WriteLine("Phần switch ngoài");
                    switch (b)
                    {
                        case 200:
                            Console.WriteLine("Phần switch trong");
                            break;
                    }
                    break;
            }
            
            Console.WriteLine("Giá trị a: {0}", a);
            Console.WriteLine("Giá trị b: {0}", b);
            Console.ReadLine();
        }
    }
}

Kết quả

Phần switch ngoài
Phần switch trong
Giá trị a: 100
Giá trị b: 200

Lưu ý

  • Mỗi case cần break (trừ case cuối hoặc dùng goto case)
  • Switch lồng nhau hữu ích cho state machine, parser, menu đa cấp
  • C# 7+: Pattern matching trong switch (case int x when x > 0:)
  • C# 8+: Switch expression (biểu thức switch) ngắn gọn hơn

Switch expression (C# 8+)

string result = (a, b) switch
{
    (100, 200) => "Outer 100, Inner 200",
    (100, _) => "Outer 100, Inner khác",
    _ => "Khác"
};