Biến cục bộ được định nghĩa hoàn toàn (Implicitly Typed Local Variables) là 1 trong những tính năng mới mà .NET v5 hỗ trợ (thật ra nó đa có từ .NET v0). Như chúng ta đã biết, biến cục bộ là biến tồn tại trong lòng 1 phương thức của 1 class nào đó. Ví dụ:
Visual C# Code:
C# 2008 cung cấp 1 từ khóa mới – var, mà bạn có thể khởi gán 1 biến mà không cần biết trước kiểu dữ liệu và compiler sẽ tự động chuyển đổi kiểu dùm bạn. Ví dụ trên sẽ được biến đổi với việc sử dụng từ khóa – var:
Visual C# Code:
Trong trường hợp này, compiler sẽ đủ thông minh để “ép kiểu” sang các kiểu dữ liệu .NET tương ứng : System.Int32, System.Boolean và System.String.
Visual C# Code:
Kết quả:
Output Code:
myInt : 3 myBoolean : True myString : cau lac bo VB
Tất nhiên, bạn cũng có thể dùng var cho mảng. Ví dụ:
Visual C# Code:
Những điều cần lưu ý:
-Không thể dùng kiểu var cho thuộc tính của class.
-Không thể dùng var làm kiểu giá trị trả về của 1 phương thức:
Visual C# Code:
-Phải khởi gán 1 biến kiểu var ngay khi khai báo nó.
Visual C# Code:
Và phải khởi gán trên cùng 1 dòng:
Visual C# Code:
Tuy nhiên, bạn được phép khởi gán 1 biến var với giá trị null:
Visual C# Code:
Bạn có thể trả lại 1 biến kiểu var trong lòng 1 phương thức:
Không thể dựa dẫm vào sự thông minh của Compiler, ví dụ:
Visual C# Code:
Nãy giờ, mình chắc chắn là các bạn cảm thấy cái biến var này nó chẳng có 1 ích lợi gì cả. Đúng, với mấy ví dụ mình cho thì không thể làm nổi bật tính năng của nó. Nhưng nếu bạn bước vào sân chơi LINQ của .NET v5 thì bạn sẽ thấy sức mạnh của var. Bây giờ, mình cho các bạn 1 ví dụ về LINQ:
Visual C# Code:
Kết quả:
Output Code:
Cac gia tri cua Subset:1 2 3 8 Subset la System.Linq.Enumerable+<WhereIterator>d__0`1[System.Int32] Subset duoc dinh nghia trong: System.Linq
Tác giả: neverland
Keep moving forward!
... Retired ...