So khớp mẫu (pattern matching) trong C#
Trong bài học này, bạn sẽ dùng biểu thức switch với các mẫu để kiểm tra kiểu và giá trị của dữ liệu một cách gọn gàng, an toàn.
Giới thiệu
So khớp mẫu (pattern matching) cho phép kiểm tra một giá trị có thuộc kiểu nào, có thỏa mãn điều kiện gì, đồng thời lấy dữ liệu ra để dùng ngay, tất cả trong một biểu thức. Cách làm này thay thế cho việc kiểm tra kiểu rồi ép kiểu thủ công, vốn dài dòng và dễ gây lỗi.
Biểu thức switch trong hàm Describe kiểm tra lần lượt từng mẫu: null cho trường hợp thiếu dữ liệu, int number when number > 0 cho số nguyên dương, string { Length: > 0 } cho chuỗi không rỗng, và _ cho mọi trường hợp còn lại. Với giá trị 12, mẫu số nguyên dương khớp và kết quả là positive 12.
Xem cách hoạt động
Kéo thanh trượt để đổi ngày. Chương trình nhảy thẳng tới case khớp, và tới default khi không case nào khớp.
Ví dụ C# chạy được
using System;
class Program
{
static string Describe(object? value) => value switch
{
null => "missing",
int number when number > 0 => $"positive {number}",
string { Length: > 0 } text => $"text: {text}",
_ => "other"
};
static void Main() => Console.WriteLine(Describe(12));
}
positive 12Luyện tập với trình gỡ lỗi
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
- Triangle Classification Classify three side lengths as invalid, equilateral, isosceles, or scalene. Dễ
- Số lẻ, số chẵn, hoặc không phải Phân loại một số là số nguyên lẻ, số nguyên chẵn, hoặc không phải cả hai. Dễ