Lập trình viên Microsoft hân hoan: Kiểu Union chính thức xuất hiện trong C# từ tháng 11
Microsoft sẽ ra mắt phiên bản C# 15 vào tháng 11 với tính năng được mong đợi nhất là kiểu union (union types), giúp gộp nhiều kiểu dữ liệu tùy chỉnh thành một thực thể duy nhất. Bên cạnh đó, phiên bản mới còn mở rộng phạm vi của từ khóa 'unsafe' để tăng cường kiểm soát bộ nhớ, cùng các cải tiến về pattern matching và cú pháp lập trình.

Lập trình viên Microsoft hân hoan: Kiểu Union chính thức xuất hiện trong C# từ tháng 11
Microsoft vừa hé lộ bản xem trước của C# 15 – phiên bản kế tiếp của ngôn ngữ lập trình này dự kiến ra mắt vào tháng 11 tới. Điểm nhấn lớn nhất của bản phát hành này chính là sự xuất hiện của kiểu union (union types) – một tính năng được cộng đồng lập trình viên chờ đợi từ lâu – cùng với những cải tiến về an toàn bộ nhớ và các ràng buộc chặt chẽ hơn đối với kiểu dữ liệu.
Tuy kiểu union không phải là khái niệm mới mẻ (Python, Scala và TypeScript đều đã hỗ trợ), nhưng với C#, đây được xem là một bước tiến đáng kể. Mads Torgersen, kiến trúc sư trưởng của C#, tự tin phát biểu trong một buổi giới thiệu đầu năm nay rằng: "Đây là cách mà kiểu union nên được triển khai."
Kiểu union là gì?
Về cơ bản, kiểu union cung cấp một cách để gom nhiều kiểu dữ liệu tùy chỉnh khác nhau vào một thực thể duy nhất. Ví dụ, từ khóa union có thể dùng để gộp các kiểu dữ liệu như "Dog", "Cat" và "Bird" thành một kiểu chung duy nhất gọi là "Pet". Việc này giúp trình biên dịch có một danh sách rõ ràng và không thể mở rộng về các loại "thú cưng" hợp lệ.
Tài liệu của Microsoft giải thích: "Union cho phép các thiết kế mà phân cấp truyền thống không thể diễn đạt, kết hợp bất kỳ sự kết hợp nào của các kiểu hiện có thành một hợp đồng duy nhất được trình biên dịch xác minh."
Những lợi ích mà tính năng này mang lại cho lập trình viên bao gồm:
- Pattern matching tốt hơn (khớp mẫu – kỹ thuật kiểm tra dữ liệu theo cấu trúc).
- Khả năng viết các hàm tùy chỉnh cho các kiểu union.
- Bảo vệ chống lại các kiểu dữ liệu lạ (rogue data types).
- Trừu tượng hóa mạnh mẽ hơn.
- Giảm việc viết mã xử lý lỗi lặp đi lặp lại (boilerplate error code).
Ứng dụng thực tế và những tính năng mới khác
Trong buổi thuyết trình, Torgersen cùng đồng nghiệp Dustin Campbell (kỹ sư chính tại Microsoft) đã trình diễn cách một union có thể hợp nhất hai bản ghi khác nhau dùng để biểu thị trạng thái thành công hay thất bại của một luồng dữ liệu mạng. Thay vì phải viết một switch expression phức tạp để xử lý từng trường hợp, họ chỉ cần một biểu thức duy nhất sau khi nhóm chúng lại bằng từ khóa union. Nếu không có tính năng này, họ sẽ phải tự thêm mã xử lý lỗi, tạo một lớp bọc (vốn tốn bộ nhớ hơn và dễ gây lỗi hơn), hoặc dùng thư viện của bên thứ ba.
Ngoài kiểu union, C# 15 còn giới thiệu tính năng closed hierarchies – mang lại sự kiểm soát tương tự cho các kiểu kế thừa. Từ khóa closed được dùng trên lớp cơ sở (base class) để giới hạn việc kế thừa trực tiếp chỉ dành cho các lớp dẫn xuất được định nghĩa trong cùng một assembly. Điều này sẽ ngăn chặn các kiểu con từ bên thứ ba biên dịch, vốn có thể gây ra lỗi không mong muốn.
Mở rộng vùng nguy hiểm (unsafe)
Phạm vi của việc định nghĩa các thao tác "không an toàn" trong C# cũng được mở rộng đáng kể. Trước đây, một khối mã được đánh dấu bằng unsafe chỉ đơn giản là thông báo cho trình biên dịch rằng nó tương tác với bộ nhớ theo cách có khả năng phát sinh lỗi. Giờ đây, phạm vi của từ khóa này được mở rộng để "thông báo cho người gọi rằng họ có những nghĩa vụ phải thực hiện để duy trì tính an toàn", theo lời Richard Lander, Giám đốc sản phẩm tại Microsoft.
Việc mở rộng này cho phép trình biên dịch đánh dấu các thao tác không an toàn một cách hiệu quả hơn. Động thái này đi theo hướng đi của Rust và Swift, nơi mà từ khóa tương tự bị ràng buộc bởi "ngữ nghĩa lan truyền nghiêm ngặt hơn".
Các cải tiến khác và tương lai của C#
Danh sách tính năng mới trong C# 15 còn có:
- Collection expression arguments: cho phép truyền tham số (như dung lượng hoặc bộ so sánh) trực tiếp vào constructor của collection bên trong cú pháp collection expression, sử dụng từ khóa
with. - Cho phép khai báo indexer trong khối mở rộng (extension block).
- Thêm nhãn (label) cho câu lệnh
breakvàcontinueđể kiểm soát tốt hơn trong các vòng lặp lồng nhau.
Thật đáng chú ý khi thấy C# vẫn tiếp tục được phát triển mạnh mẽ trong bối cảnh Microsoft đang chuyển trọng tâm từ bán giấy phép Windows và Office sang bán đăng ký đám mây và tích hợp trợ lý AI Copilot vào mọi ngóc ngách. Được tạo ra bởi Anders Hejlsberg và phát hành lần đầu vào năm 2002 như một lựa chọn thay thế cho Java chạy trên nền tảng .NET mới của Microsoft, C# đã tiên phong cho nhiều khả năng mới của ngôn ngữ lập trình như cơ chế đồng bộ bất đồng bộ (async) và giao diện LINQ để truy vấn cơ sở dữ liệu. Hơn 20 năm trôi qua, Microsoft vẫn đều đặn cập nhật ngôn ngữ này.
Để trải nghiệm thử C# 15, các nhà phát triển có thể tải bản xem trước của .NET 11. Với việc bổ sung kiểu union cùng hàng loạt cải tiến về mặt an toàn và cú pháp, đây hứa hẹn sẽ là một bản phát hành đáng giá cho cộng đồng lập trình viên C# trên toàn thế giới, đặc biệt là những ai đang làm việc với các hệ thống phức tạp và cần xử lý nhiều kiểu dữ liệu khác nhau.