WWW.CSHARPVN.COM
C# Cơ Bản
Biên tập: trunghieu.nth@gmail.com Nguồn: Internet
Khai báo biến kiểu không tường minh là biến được khai báo mà không cần phải chỉ ra kiểu dữ liệu. Kiểu dữ liệu của biến
sẽ được xác định bởi trình biên dịch dựa vào biểu thức được gán khi khai báo biến.
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 phi khai báo kiu ca biến là int. Nói chung, dng khai báo là như
sau:
<kiu biến> <tên biến> = <giá tr ban đu>
C# 3.0 đưa thêm 1 t khoá mi gi là “var“. T khoá var cho phép định nghĩa 1 biến mà không cn khai báo
kiu tường minh, nhưd dưới đây là hp l trong C# 3.0
var i = 3;
“var” không phải là kiểu object hoặc variant (trong VB). Kiểu dữ liệu của biến được xác định bởi biểu thức được gán vào
biến. Ví dụ trên thì biến i sẽ có kiểu là int.
Nếu chúng ta khởi tạo biến là một kiểu string như sau:
var i = "This is a string";
Và do i là kiểu string, nên các function sẽ thay đổi theo:
WWW.CSHARPVN.COM
C# Cơ Bản
Biên tập: trunghieu.nth@gmail.com Nguồn: Internet
Bạn có thể khai báo các trường hợp khác như sau:
var i = 5;
var s = "Hello";
var d = 1.0;
var numbers = new int[] { 1, 2, 3 };
var orders = new Dictionary<int, Order>();
Hn chế:
- biến phi được khi to giá tr khi nó được khai báo.
var test; // ERROR
- giá tr khi to phi là mt biu thc. Giá tr khi to không được là 1 mt đối tượng hay tp hp các giá tr.
Nhưng nó có th s dng toán t new bi mt đối tượng hoc tp hp các giá tr. Bn không th gán giá tr khi
to là mt dãy d liu.
var test = { 1, 2, 3 }; //ERROR
var test1 = new[] { 1, 2, 3 }; //This is correct!!
- giá tr khi to không th là null
var test = null; //ERROR
- Nếu biến được gán giá tr, thì kiu d liu phi ging nhau
var test = 1;
test = "This is a string"; // ERROR
WWW.CSHARPVN.COM
C# Cơ Bản
Biên tập: trunghieu.nth@gmail.com Nguồn: Internet
1. Ti sao chúng ta cn dùng var khi chúng ta có th khai báo biến vi mt kiu d liu ?
Đúng, chúng ta không cn dùng var nếu chúng ta biết loi d liu được dùng. Nó không được thiết kế cho mc
đích đó. Nếu bn biết loi d liu thì dùng loi d liu đó.
2. Khi tôi viết “var myvar = 1;” thì trình biên dch s hiu biến myvar có giá tr kiu int ? Nhưng tôi mun khai
báo nó là kiu long. Làm thế nào để trình biên dch biết myvar là kiu long, cũng như các kiu ulong, uint ?
đây, câu hi này cũng ging như câu hi đầu tiên. Nếu bn đã biết loi d liu thì không cn dùng var. Tuy
nhiên, bn vn có th khai báo như sau:
var ui = 1U; // uint
var l = 42L; // long
var big = 1234567890UL; // ulong
var pi = 3.1416; // double
var size = 12.5F; // float
var price = 27.99M; // decimal
Tng kết:
- Khai báo biến kiu không tường minh (Implicitly Typed Local Variables) không phi là kiu object hoc
variant
- “var” ging như là nơi gi ch để trình biên dch thay thế kiu d liu thc s da vào giá tr được gán
- Bn không nên dùng Implicitly Typed Local Variable nếu bn biết loi d liu
- “Implicitly Typed Local Variables” là mt đặt tính hay khi bn làm vic vi Anonymous Type hoc LINQ.