Var data type was introduced in C# 3.0. var is used to declare implicitly typed local variable means it tells the compiler to figure out the type of the variable at compilation time. A var variable must be initialized at the time of declaration.
Valid var statements
- var str = "1";
- var num = 0;
- string s = "string";
- var s2 = s;
- s2 = null;
- string s3 = null;
- var s4 = s3;
At compile time, the above var statements are compiled to IL, like this:
- string str = "1";
- int num = 0;
- string s2 = s;
- string s4 = s3;
The compile-time type value of var variable cannot be null but the runtime value can be null.
- // invalid var statements
- var v; //need to initialize
- var num = null; // can’t be null at compile time
Once var variable is initialized its data type became fixed to the type of the initial data.
- // invalid var statements
- var v2 = "str12";
- v2 = 3; // int value can’t be assign to implicitly type string variable v2
Anonymous Types
An anonymous type is a simple class generated by the compiler within IL to store a set of values. var data type and new keyword is used to create an anonymous type.
- var emp = new { Name = "Deepak", Address = "Noida", Salary=21000 };
At compile time, the compiler will create an anonymous type, as follows:
- class __Anonymous1
- {
- private string name;
- private string address;
- int salary; public string Name
- {
- get{return name; }
- set { name=value }
- }
- public string Address
- {
- get{ return address; }
- set{ address=value; }
- }
- public int Salary
- {
- get{ return salary; }
- set{ salary=value; }
- }
- }
The anonymous type is very useful when you want to shape the result in your desired form like this:
- var result =from book in Books
- where book.Price > 200
- orderby book.IssueDate descending
- select new
- {
- Name = book.Name,
- IssueNumber = "#" + book.Issue
- };
In above example, I change the name of the “Issue” field of Book table to “IssueNumber” and add # before value to get desired output.
No comments:
Post a Comment