匿名类型的作用:有时候你定义的类只是用来封装一些相关的数据,但并不需要相关联的方法、事件和其他自定义的功能。同时,这个类仅仅在当前的应用程序中使用,而不需要在项目间重用。你所需要的只是一个“临时的”类型,现在来看看这个类的定义:
internal class oneClass
{
//定义若干私有数据成员
//通过属性来封装每个数据成员
//…
}
构建上面的类虽然说不上有多难,但是如果这个类有很多数据成员的话,那么还是要消耗相当时间的。C#3.0提供了匿名类型来轻松完成这个工作。现在定义一个简单的people类型:
//构建一个匿名对象来表示一个人
var Apeople=new{Sex=”male”,Name=”Linc”,Age=”26”};
//现在我们就可以使用属性语法获取和设置对象的各个变量
Apeople.Age=”27”;
Console.WriteLine(“{0} is {1} years old.”,Apeople.Name,Apeople.Age);
匿名类型的嵌套
刚刚我们定义了表示一个人的匿名类型,现在我们定义一个表示雇员的嵌套匿名类型:
var Aemployee = new {
joinDate =”2007-7-31”,
Apeople=new {Sex=”male”,Name=”Linc”,Age=”26”},
title = projManager
}
匿名类型的限制:
1:匿名类型不支持事件、自定义方法和自定义重写
2:匿名类型是隐式封闭的(sealed)
3:匿名类型的实例创建只使用默认构造函数
4:匿名类型没有提供可供控制的类名称(使用var 定义的)
也许现在理解匿名类型的好处还为时尚早,等到使用LINQ时可能需要快速创建一个实体而又不需要定义其功能,这时你就会体会到匿名类型的好处了。
//下面再插入一段自MSDN的匿名方法和命名方法的实例