Cấu trúc rẽ nhánh Switch case trong C#
Nguyễn Dương 07-06-2024Trong bài trước, mình đã cùng các bạn tìm hiểu về cấu trúc rẽ nhánh if - else, đây là cấu trúc có trong hầu hết các ngôn ngữ lập trình. Trong bài viết này, mình sẽ giới thiệu một dạng khác của cấu trúc rẽ nhánh.
Đặt vấn đề là khi có quá nhiều trường hợp xảy ra, nếu chúng ta dùng câu lệnh if sẽ rất rối rắm và dài dòng. Vì vậy các ngôn ngữ lập trình cấp cao đều cung cấp một dạng câu lệnh switch - case liệt kê các giá trị và thực hiện câu lệnh với mỗi giá trị tương ứng.
CẤU TRÚC SWITCH CASE TRONG C#
1: Switch - case dạng thiếu
Cú pháp:
switch (biểu thức) { case <giá trị thứ 1>: <câu lệnh thứ 1>; break; case <giá trị thứ 2>: <câu lệnh thứ 2>; break; .......... case <giá trị thứ n>: <câu lệnh thứ n>; break; }
- switch, case là từ khóa bắt buộc
- break là lệnh nhảy. Ngoài break thì còn lệnh nhảy khác như goto nhưng ít được sử dụng
- biểu thức phải trả về kết quả kiểu:
- Số nguyên (int, long, byte,......)
- Ký tự hoặc chuỗi (char, string)
- Kiểu liệt kê
Ý nghĩa: Duyệt lần lượt từ trên xuống dưới và kiểm tra xem giá trị của biểu thức bằng với giá trị nào được liệt kê thì thực hiện câu lệnh tương ứng với giá trị đó.
Ví dụ:
Ví dụ:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp3 { class Program { static void Main(string[] args) { Console.Write("Nhap vao thang can kiem tra: "); int x = Convert.ToInt32(Console.ReadLine()); switch (x) { case 1: case 2: case 3: Console.WriteLine("Thang {0} la mua xuan", x); break; case 4: case 5: case 6: Console.WriteLine("Thang {0} la mua he", x); break; case 7: case 8: case 9: Console.WriteLine("Thang {0} la mua thu", x); break; case 10: case 11: case 12: Console.WriteLine("Thang {0} la mua dong", x); break; } Console.ReadKey(); } } }
2: Switch - case dạng đủ
Trong ví dụ trên, nếu người dùng nhập vào giá trị không phải số nguyên từ 1 đến 12 thì chương trình sẽ không chạy. Vậy chúng ta phải dùng đến dạng đủ của switch - case để dự phòng trường hợp biểu thức có giá trị không nằm trong các giá trị được liệt kê.
Cú pháp:
switch (biểu thức) { case <giá trị thứ 1>: <câu lệnh thứ 1>; break; case <giá trị thứ 2>: <câu lệnh thứ 2>; break; ....................................... case <giá trị thứ n>: <câu lệnh thứ n>; break; default: <câu lệnh mặc định>; break; }
Ý nghĩa: Tương tự dạng thiếu, chỉ khác là nếu biểu thức không bằng bất cứ giá trị nào được liệt kê thì thực hiện câu lệnh mặc định
Sơ đồ minh họa 2 dạng switch - case
Ví dụ:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp3 { class Program { static void Main(string[] args) { Console.Write("Nhap vao thang can kiem tra: "); float x = float.Parse(Console.ReadLine()); switch (x) { case 1: case 2: case 3: Console.WriteLine("Thang {0} la mua xuan", x); break; case 4: case 5: case 6: Console.WriteLine("Thang {0} la mua he", x); break; case 7: case 8: case 9: Console.WriteLine("Thang {0} la mua thu", x); break; case 10: case 11: case 12: Console.WriteLine("Thang {0} la mua dong", x); break; default: Console.WriteLine("Ban nhap khong hop le"); break; } Console.ReadKey(); } } }
Kết quả sẽ khác với ví dụ trước, nếu bạn nhập không phải là số nguyên từ 1 đến 12 thì chương trình sẽ thông báo là "Ban nhap khong hop le"
Bài viết liên quan
Hàm đệ quy trong C#
enum trong C#
Struct trong C#
Lớp String trong C#
Vòng lặp foreach trong C#
Mảng đa chiều, mảng của mảng trong C#