Sự tiến hóa của ngôn ngữ C#

C# được giới thiệu bởi Microsoft vào giữa những năm 2000. Nó được phát triển bởi Anders Hejlsberg.
Đây là ngôn ngữ lập trình hướng đối tượng giúp các lập trình viên có thể xây dựng các ứng dụng chạy trên nền tảng Windows với .NET Framework.
Trải qua sự phát triển của mình thì ngôn ngữ C# ngày càng được Microsoft phát triển qua từng phiên bản. Phiên bản hiện tại mới nhất là C# 8.0

Dưới đây là những điểm nổi bật của từng phiên bản
1. C# 1.0
Đây là phiên bản đầu tiên của C# được phát hành cùng với Visual Studio phiên bản đầu tiên.
Đây là phiên bản sơ khai đầu tiên nên nó chỉ hỗ trợ các tính năng cơ bản của một ngôn ngữ hướng đối tượng. Các tính năng quan trọng có thể kể đến như
  • Classes
  • Structs
  • Interfaces
  • Events
  • Properties
  • Delegates
  • Expressions
  • Statements
  • Attributes

C# 1.2 được phát hành cùng với Visual Studio 2003 có cải tiến hỗ trợ thêm một số thứ như foreach, IEnumerator, IDisposable ...

2. C# 2.0
Phiên bản này được cung cấp thêm nhiều tính năng cực kỳ thú vị phát hành cùng với Visual Studio 2005

  • Generics
  • Partial types
  • Anonymous methods
  • Nullable types
  • Iterators
  • Covariance and contravariance

a. Kiểu dữ liệu Generic: Nói đơn giản, nó là kiểu mà các bạn hay dùng ấy. Với generic, code trở nên gọn gàng sáng sủa hơn, ta cũng có thể tái sử dụng function cho nhiều kiểu dữ liệu khác nhau.

b. Kiểu dữ liệu nullable: Trong nhiều trường hợp, ta cần thể hiện giá trị null với kiểu dữ liệu tham trị như int, double v…v. Với 1 số ngôn ngữ khác, ta phải chuyển nó sang dạng tham chiếu như  Interger, Double. Với C# 2, ta có thể dùng kiểu nullable, khai báo bằng cách: Nullable hoặc int?. Rất ngắn gọn và đơn giản/

c. Delegate: Đã có thể sử dụng anonymous delegate, viết ngắn học hơn so với C# 1

d. Partial class: Một partial class có thể được khai báo trong nhiều file khác nhau. Partial class được áp dụng trong Winform, class tự sinh từ Entity Framework, giúp ta dễ dàng thêm chức năng vào form, class mà không cần động tới những class được C# tự tạo ra.

d. Iterator (IEnumerable): Để duyệt từng phần tử một mảng, ta có thể dùng hàm foreach. Iterator là một cực hình khi implement trong C# 1. Với từ khóa yield, việc tạo Iterator trong C# đã trở nên rất dễ ràng

3. C# 3.0
Phiên bản này được phát hành cuối năm 2007 cùng với Visual Studio 2008
Các tính năng quan trọng

  • Auto-implemented properties
  • Anonymous types
  • Query expressions
  • Lambda expressions
  • Expression trees
  • Extension methods
  • Implicitly typed local variables
  • Partial methods
  • Object and collection initializers

a. Một số thay đổi nhỏ trong compiler: Một số thay đổi nho nhỏ được C# thêm vào, giúp việc code trở nên nhẹ nhàng hơn
Tự implement getter, setter thông qua properties
Khởi tại object và array một cách dễ dàng
Khai báo bằng biến var
Anonymous class
b. Lambda expression: Lambda expression giúp việc viết delegate trở nên dễ dàng hơn rất nhiều.
c. Extension method:
d. Query và LINQ: Đây là phiên bản C# đầu tiên LINQ ra đời, đã làm võ lâm dậy sóng, giang hồ chấn động. Những cải tiến như var, anonymous class, lamda expression, extension method đều là nền tảng để xây dựng LINQ.
e. Ứng dụng khác của LINQ: Ban đầu, LINQ được dùng để filter, sort v…v các object trong bộ nhớ. Nhờ sự trợ giúp của expression tree, LINQ đã có 1 số ứng dụng khác như: LINQ to SQL (Dịch lambda expression thành SQL, query trực tiếp dưới database), LINQ to XML, Parellel LINQ.


4. C# 4.0
Phát hành năm 2010. Ở phiên bản này có thêm cải tiến nho nhỏ
  • Dynamic binding
  • Named/optional arguments
  • Generic covariant and contravariant
  • Embedded interop types

a. Cải tiến nhỏ giúp code ngắn gọn hơn: Thêm named arguments  và optional parameters

b. Lập trình với dynamic: Đây là thay đổi lớn nhất và đáng chú ý nhất trong C#. Với dynamic, giờ đây ta có thể làm việc với các object từ những ngôn ngữ dynamic như Python, Ruby, Javascript, … Nghe có vẻ hoành tráng nhưng mình thấy dynamic ít được xài trong cái project thật.

5. C# 5.0
Phát hành năm 2012. Phiên bản này thêm tính năng khá quan trọng khi làm việc với bất đồng bộ

  • Asynchronous members
  • Caller info attributes

Điểm nhấn lớn nhất của phiên bản C# 5 này chính là 2 từ khóa async và await. Nhiều function trong C# đã được hỗ trợ call async và await

6. C# 6.0
Phát hành vào năm 2015
Với phiên bản C# 3.0 và C# 5.0 Microsoft đã thêm những tính năng chính cần thiết và tương đối mạnh cho ngôn ngữ C#. Từ C# 6.0 trở đi họ chú trọng vào các tính năng nhỏ giúp ngôn ngữ ngày càng hoàn thiện hơn. Các tính năng trong phiên bản này phải kể đến như

  • Static imports
  • Exception filters
  • Auto-property initializers
  • Expression bodied members
  • Null propagator
  • String interpolation
  • nameof operator
  • Index initializers

Các tính năng khác cũng phải kể đến như

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

Ngoài ra trình biên dịch Roslyn cũng được giới thiệu trong thời gian này.

7. C# 7.0
Phiên bản này thêm những tính năng nho nhỏ nhưng hữu ích giúp các lập trình viên viết code được rõ ràng và "sạch" hơn.
Các tính năng được giới thiệu trong phiên bản này

  • Out variables
  • Tuples and deconstruction
  • Pattern matching
  • Local functions
  • Expanded expression bodied members
  • Ref locals and returns
  • Discards
  • Binary Literals and Digit Separators
  • Throw expressions


8. C# 8.0
Đây là phiên bản mới nhất
Các tính năng được giới thiệu trong phiên bản này


  • Readonly members
  • Default interface members
  • Pattern matching enhancements (Switch expressions, Property patterns, Tuple patterns, Positional patterns)
  • Using declarations
  • Static local functions
  • Disposable ref structs
  • Nullable reference types
  • Asynchronous streams
  • Indices and ranges


Tiếp tục cập nhật ...

Tham khảo thêm
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history
https://www.dotnetcurry.com/csharp/1465/csharp-evolution