实例 C#3.0与C#2.0相比之新特性(三)---匿名类型 匿名变量
在C#3.X中引进了var这个新关键字,在声明局部变量时可用于替代原先的类型名,即当一个变量声明标识为var类型并且该范围域中没有var名称类型存在,那么这个声明就称为隐含类型局部变量。先来看个完整的DEMO吧:
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class AnonymousTypes : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var INT = 1;
var FLOAT = 3.1415926;
var STRING = "Hello World";
var oStaff = new {Name="qiujuan",Sex="Male",Age=22 };
var aAge = new[] { 22,23,24,25,26};
var aStaff = new[]{
new {Name="syf",Sex="Male",Age=27 },
new {Name="zjy",Sex="Male",Age=25 },
new {Name="qiujuan",Sex="Male",Age=22}
};
Response.Write((INT+FLOAT).ToString()+STRING+"<BR>");
Response.Write(oStaff.Name+"<br>");
foreach(var item in aStaff)
Response.Write(string.Format("姓名:{0} 性别:{1} 年龄{2}<br>",item.Name,item.Sex,item.Age));
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class AnonymousTypes : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var INT = 1;
var FLOAT = 3.1415926;
var STRING = "Hello World";
var oStaff = new {Name="qiujuan",Sex="Male",Age=22 };
var aAge = new[] { 22,23,24,25,26};
var aStaff = new[]{
new {Name="syf",Sex="Male",Age=27 },
new {Name="zjy",Sex="Male",Age=25 },
new {Name="qiujuan",Sex="Male",Age=22}
};
Response.Write((INT+FLOAT).ToString()+STRING+"<BR>");
Response.Write(oStaff.Name+"<br>");
foreach(var item in aStaff)
Response.Write(string.Format("姓名:{0} 性别:{1} 年龄{2}<br>",item.Name,item.Sex,item.Age));
}
}
}
值得注意的几个地方:
- 初始化语句必须为表达式,不可以为空。且编译时可以推断类型。一旦初始化之后,只可以存储这种类型。
- var声明的仅限于局部变量,不可用于字段。亦可以用于for,foreach,using 等语句中。
- 数组也可以作为隐含类型。
- 初始化语句不能是一个自身的对象或者集合初始化器,但是他可以是包含一个对象或者初始化器的一个new表达式。
- 如果局部变量声明包含了多个声明符,其类型必须相同。