Từ khóa var


Bắt đầu từ C# 3.0, các biến khai thuộc bên trong các phương thức có thể được khai báo kiểu ngầm định bằng cách dùng từ khóa var. Một biến được khai báo bằng từ khóa này vẫn có kiểu cụ thể, chỉ khác là kiểu này được xác định tự động bởi trình dịch, hai câu khai báo sau là hoàn toàn tương đương:

var i = 10;
int i = 10;

Những ràng buộc sau được áp dụng khi một biến được khai báo bằng var:

  • Biến phải được khởi tạo ngay khi khai báo.
  • Câu lệnh khởi tạo phải là một biểu thức (tức phải có giá trị).
  • Biểu thức khởi tạo phải có một kiểu không phải kiểu null..
  • Câu lệnh khai báo không sử dụng cho việc khai báo nhiều biến đồng thời.
  • Câu lệnh khởi tạo không được phép tham chiếu lại chính biến được khai báo.

Các ví dụ sau là không hợp lệ:

var x; // Lỗi, không có câu lệnh khởi tạo 
var y = {1, 2, 3}; // Lỗi, câu lệnh khởi tạo không được phép là một tập hợp 
var z = null; // Lỗi, không được phép là kiểu null 
var u = x => x + 1; // Lỗi, biểu thức lambda không có kiểu 
var v = v++; // Lỗi, câu lệnh khởi tạo không được phép tham chiếu lại biến đang được khai báo


Chú ý:
Vì lý do tương thích, nếu bạn khai báo một biến bằng từ khóa var, và có một kiểu tên var đang tồn tại (in scope), kiểu var sẽ được dùng thay cho từ khóa var. Tuy nhiên trường hợp này có lẽ ít xảy ra vì tên kiểu var không đúng với quy ước đặt tên kiểu (chữ cái đầu mỗi từ phải là chữ hoa).

Các phát biểu for và using có thể dùng var, và biến được khai báo sẽ có cùng kiểu với biểu thức khởi tạo:

Ví dụ:

for (var i = 1; i <= 10; i++) //Biến i có kiểu int
using (var context = new MyDataContext()) //Biến context có kiểu MyDataContext

Ngược lại, nếu dùng var khi khai báo biến với vòng lặp foreach, biến này sẽ có kiểu của thành phần bên trong tập hợp được duyệt.

Ví dụ:

int[] numbers = { 1, 3, 5, 7, 9 }; foreach (var n in numbers) Console.WriteLine(n); //Biến n có kiểu int

Cũng như biểu thức lambda, bản thân var không phải là một thành phần của LINQ, tuy nhiên nó hỗ trợ LINQ trong việc giúp người dùng khai báo các câu truy vấn một cách đơn giản hơn.

Đào Hải Nam

2 thoughts on “Từ khóa var

  1. Anh Nam cho em hỏi chút em muốn convert 1 kiểu vả sang kiểu string thì làm thế nào em làm mãi mà nó toàn hiện ra chuỗi có select gì đó

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 )

Facebook photo

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

Connecting to %s