Tìm hiểu C# 3.0: Implicitly typed local variables

Ở bài viết lần trước, tôi có đề cập đến việc sử dụng Visitor pattern. Visitor pattern được dùng để can thiệp vào cấu trúc class nhưng vẫn đảm bảo tính đóng của nó. Tuy nhiên, với C# 3.0, ta có thể thay thế Visitor pattern bằng partial class hoặc extensible method để giải quyết bài toán mà tôi đề cập tuần trước.
.NET framework 3.0 đã được Microsoft đưa ra. Hôm nay, tôi xin trình bày bài viết đầu tiên về C# 3.0 để tìm hiều về Impicitly typed local variables.
Trước kia ở C# 1.x và 2.0, khi muốn khai báo 1 biến, bạn phải code như sau:

int i = 3;

Rõ ràng, để khai báo 1 biến integer, mình phải khai báo kiểu của biến là int. Nói chung, dạng khai báo là như sau:

<kiểu biến> <tên biến> = <giá trị ban đầu>

Ở C# 3.0, có thể khai báo biến mà không cần khai bảo kiểu của biên mà kiểu của biến sẽ tự động được trình biên dịch xác định ra từ biểu thức gán giá trị ban đầu của biến đó. Ví dụ:

var i = 3; // biến i sẽ có kiểu là int

var name = “Khuong Tu Nh@”; // name có kiểu là string

var nameList = new string[]{“Khuong Tu Nh@”, “Zizou”, “Ronie”}; // mảng string

var factory = new Dictionary<string, object>(); // bạn có thể suy luận ra điều tôi muốn nói.

Tuy nhiên, việc khai báo biến bằng var cũng có 1 số ràng buộc sau:
– Phải gán giá trị ban đầu
– Phải khởi tạo giá trị ban đầu bằng biểu thức.
– Kiểu trả về của biểu thức để khởi tạo giá trị ban đầu không được là null type
– Nếu khai báo nhiều biến theo kiểu này, các biểu thức khởi tạo phải cùng kiểu lúc biên dịch.

Sau đây là các ví dụ sẽ gây lỗi biên dịch:

var x;
var indexList = {1, 2, 3};
var emptyObj = null;

Việc sử dụng khai báo var kết hợp với foreach sẽ giúp ta viết code ngắn gọn và rõ ràng hơn:

var nameList = new string[]{“Khuong Tu Nh@”, “Zizou”, “Ronie”};

foreach(var name in nameList)

{

Console.WriteLine(“Name: ” + name);

}

Lúc biên dịch, biến name sẽ được xác định kiểu là string vì nó có kiểu giống kiểu của phần tử thuộc mảng nameList.

Bạn có thể nghĩ rằng việc sử dụng var khiến bạn khó khăn trong đọc code nhưng khi kết hợp với các tính năng khác của C# 3.0, việc sử dụng var sẽ đem lại nhiều lợi thế.

Rgds
Nguyen Minh Dung

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: