Sự phát triển của ngôn ngữ lập trình C# (Part 2)

3 min read

C# 6.0

Phiên bản 6.0, được phát hành cùng với Visual Studio 2015, đã giới thiệu nhiều tính năng nhỏ hơn giúp tăng năng suất lập trình C#. Dưới đây là một số trong số đó:

Ngoài ra là một số tính năng mới:

  • Index initializers
  • Await in catch/finally blocks
  • Default values for getter-only properties

Khi tổng hợp lại danh sách các tính năng này, ta sẽ thấy một pattern thú vị. Trong phiên bản này, C# đã bắt đầu loại bỏ các pattern lặp lại của ngôn ngữ để giúp code trở nên súc tích và dễ đọc hơn. Vì vậy, với những người hâm mộ clean code, phiên bản này của ngôn ngữ là một món quà với họ.

Ngoài ra, Microsoft cũng đã làm một điều khác trong phiên bản này. Họ đã phát hành GitHub – dotnet/roslyn: The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs., trình biên dịch C# bây giờ được viết bằng C#.

C# 7.0

C# phiên bản 7.0 được phát hành cùng với Visual Studio 2017. Phiên bản này có một số tính năng cải tiến theo xu hướng của C# 6.0. Dưới đây là một số tính năng mới:

Tất cả những tính năng này tiếp tục hỗ trợ cho developer có thể viết clean code. Một điểm nổi bật là việc rút gọn việc khai báo biến để sử dụng với từ khóa out và cho phép nhiều giá trị trả về thông qua tuple. Ngoài ra, sự xuất hiện của .NET Core đã mang lại việc lập trình cross-platform và có tầm nhìn vững chắc hướng tới cloud và các thiết bị di động.

C# 7.1

Đây là bản cập nhật nhỏ của C#, Phiên bản này có thêm tính năng lựa chọn phiên bản ngôn ngữ, và một vài tính năng nhỏ.

Trình biên dịch có hai tùy chọn -refout-refonly để kiểm soát việc tạo reference assembly.

C# 7.2

Bản cập nhật thứ 3 trong năm 2017 của Microsoft

  • Khởi tạo trên mảng stackalloc: Cho phép khởi tạo trực tiếp trên mảng stackalloc, giúp tối ưu hóa hiệu suất và quản lý bộ nhớ hiệu quả hơn.
  • Sử dụng fixed statements với bất kỳ kiểu dữ liệu nào hỗ trợ một pattern: giúp quản lý bộ nhớ định cố định một cách an toàn.
  • Truy cập vào các trường cố định mà không cần pinning: giúp tối ưu hóa hiệu suất.
  • Gán lại biến cục bộ ref: Cho phép gán lại biến cục bộ ref, giúp linh hoạt hơn trong việc quản lý tham chiếu.
  • Khai báo các kiểu readonly struct: một struct là không thay đổi và nên được truyền vào như một tham số in đến các phương thức thành viên của nó.
  • Thêm in modifier cho các tham số: một đối số được truyền bằng tham chiếu nhưng không được sửa đổi bởi phương thức gọi.
  • Sử dụng ref readonly modifier cho việc trả về phương thức: một phương thức trả về giá trị của nó theo tham chiếu nhưng không cho phép viết vào đối tượng đó.
  • Khai báo các kiểu ref struct: chỉ ra rằng một kiểu struct truy cập trực tiếp vào bộ nhớ được quản lý và luôn được cấp phát trên stack.
  • Sử dụng các ràng buộc generic bổ sung: mở rộng khả năng sử dụng generic trong mã của bạn.
  • Các đối số không có tên cuối cùng: Cho phép các đối số không có tên theo sau các đối số có tên, giúp tăng tính linh hoạt khi sử dụng.
  • Dấu gạch dưới dẫn đầu trong số literal số: Cho phép các số literal có dấu gạch dưới dẫn đầu trước bất kỳ chữ số nào, giúp tăng tính đọc dễ dàng và rõ ràng.
  • Bộ truy cập private protected: cho phép truy cập cho các lớp dẫn xuất trong cùng một assembly.
  • Biểu thức ref điều kiện: Kết quả của biểu thức ref điều kiện (?:) có thể là một tham chiếu, giúp tăng cường tính linh hoạt trong việc sử dụng biểu thức điều kiện.
Avatar photo

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc comment trong lập trình

Trong lập trình, code không chỉ là một tập hợp các câu lệnh để máy tính thực thi, mà còn là một hình thức...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc xử lý lỗi (Error Handling)

Trong quá trình phát triển phần mềm, việc xử lý lỗi không chỉ là một phần quan trọng mà còn ảnh hưởng trực tiếp...
Avatar photo Dat Tran Thanh
4 min read

Leave a Reply

Your email address will not be published. Required fields are marked *