C# 12 ra đời cùng với .NET 8 có nhiều tính năng mới giúp đơn giản hóa việc xây dựng các ứng dụng hiện đại, linh hoạt. Trong bài viết sẽ điểm qua các tính năng mới hay nhất có trong C# 12.
Mục lục
Các hàm tạo chính (primary constructor) trong C# 12
Hàm tạo chính là một tính năng mới trong C# 12 cho phép khai báo các hàm tạo có tham số có sẵn trong phần nội dung của kiểu. Chúng cho phép khai báo các hàm tạo nội tuyến với khai báo kiểu, từ đó làm cho cú pháp chính xác và ngắn gọn hơn.
Hàm tạo chính có thể dùng cho bất kỳ struct hay class. Bạn không còn bị giới hạn trong việc chỉ tạo các hàm tạo chính trong các kiểu record. Bằng cách sử dụng các hàm tạo chính, bạn không còn cần các định nghĩa hàm tạo riêng biệt nữa.
Ví dụ định nghĩa hàm tạo chính trong struct:
Hàm tạo chính được sử dụng để:
- Để khởi tạo thành phần hoặc trường có kiểu chứa
- Là đối số khi gọi hàm tạo lớp cha (Sử dụng base())
- Để tham chiếu tham số hàm tạo trong thành phần thể hiện của kiểu chứa
Ví dụ cài đặt đơn giản của hàm tạo chính trong lớp (class):
Lưu ý phương thức ToString() đã bị ghi đè trong lớp Author. Do đó, bạn có thể tạo một thể hiện của lớp Authhor bằng cách chuyển các tham số cho hàm tạo chính rồi gọi phương thức ToString() trên thể hiện để hiển thị giá trị của các thuộc tính.
Biểu thức tập hợp (collection expressions)
Trước C# 12, cú pháp dùng khởi tạo tập hợp là List<int> so với int[] hoặc Span<int>. Với việc giới thiệu tính năng biểu thức tập hợp trong C# 12, cho phép sử dụng cú pháp ngắn gọn hơn khi tạo các tập hợp như mảng, danh sách và từ điển.
Ví dụ:
Trong đoạn mã trên, biểu thức tập hợp { “Sunday”,”Monday”, “Tuesday”,”Wednesday”, “Thursday”, “Friday”, “Saturday” } được sử dụng để khởi tạo List daysOfWeek. Cú pháp này ngắn gọn và dễ đọc hơn nhiều so với việc thêm từng phần tử của tập hợp riêng biệt.
Inline arrays (mảng nội)
Mảng nội là mảng dựa trên struct có kích thước cố định mà bạn có thể sử dụng để tăng hiệu quả mã khi quản lý bộ đệm. Trước mảng nội, bạn có thể thao tác các khối bộ nhớ bằng cách sử dụng stackalloc hoặc con trỏ—tuy nhiên, các kỹ thuật như vậy yêu cầu bạn đánh dấu tập hợp của mình là không an toàn bằng cách sử dụng từ khóa unsafe. Với C# 12, bạn có thể khai báo mảng nội để hoạt động với khối bộ nhớ mà không cần sử dụng từ khóa không an toàn.
Ví dụ về khai báo mảng nội:
Mảng nội có thể dùng giống với các mảng khác trong C#
Tham số lambda mặc định trong C# 12
C# 12 cho phép xác định các giá trị tham số mặc định trong biểu thức lambda giống như với phương thức hoặc hàm cục bộ. Tính năng này có thể làm cho biểu thức lambda linh hoạt và biểu cảm hơn.
Ví dụ về tham số lambda mặc định:
Ref readonly parameters (tham số tham chiếu chỉ đọc)
Hỗ trợ cho các tham số chỉ đọc ref, ban đầu được giới thiệu trong C# 7.2, cho phép truyền tham số bằng tham chiếu trong ngữ cảnh chỉ đọc, do đó tắt mọi sửa đổi đối với tham số.
Tính năng này cho phép sử dụng các tham số chỉ đọc ref trong một số trường hợp khác. Bạn nên sử dụng các tham số chỉ đọc ref trong một phương thức khi bạn sẽ không sửa đổi giá trị tham số mà chỉ truy cập vào vị trí bộ nhớ của nó.
Ví dụ:
Trong đoạn mã trên, phương thức Display nhận hai tham số x và y, cả hai đều giống như trong tham số. Việc sử dụng từ khóa in trong các tham số của phương thức ngụ ý rằng các tham số này sẽ được truyền bằng tham chiếu chỉ đọc, do đó chúng không thể sửa đổi được. Bạn có thể muốn sử dụng các tham số chỉ đọc ref khi bạn muốn truyền các đối tượng lớn cho các phương thức bằng tham chiếu và tránh chi phí sao chép phương thức không cần thiết trong khi vẫn đảm bảo tính bất biến của các tham số.
C# 12 giúp làm việc với C# dễ dàng hơn bao giờ hết. Và còn rất nhiều các tính năng mới bạn cần phải nghiên cứu và tìm hiểu thêm tại địa chỉ:
Giảng viên Nguyễn Ngọc Anh
Bộ môn Công nghệ thông tin
FPT Mạng cá cược bóng đá
Đà Nẵng