实例 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));
        }
    }
}

 

值得注意的几个地方:

  • 初始化语句必须为表达式,不可以为空。且编译时可以推断类型。一旦初始化之后,只可以存储这种类型。
  • var声明的仅限于局部变量,不可用于字段。亦可以用于for,foreach,using 等语句中。
  • 数组也可以作为隐含类型。
  • 初始化语句不能是一个自身的对象或者集合初始化器,但是他可以是包含一个对象或者初始化器的一个new表达式。
  • 如果局部变量声明包含了多个声明符,其类型必须相同。
posted @ 2009-01-05 13:35  chunchill  阅读(1423)  评论(1编辑  收藏  举报