天轰穿C# -vs2010 - 04面向对象的编程之匿名类型 【原创】
2013-01-24 13:29
387 查看
小天:有的时候,我们希望临时保存一组数据,而每组数据又都是有多个键值对组成的,这个时候,我们咋办呢?
老田:可以用.NET3.0以后出来的一个新特性 – 匿名类型。第2章讨论了var关键字,用于表示隐式类型化的变量。var与new关键字一起使用时,可以创建匿名类型。匿名类型只是一个继承了Object的、没有名称的类。该类的定义从初始化器中推断,类似于隐式类型化的变量。
如果需要一个对象包含某个人的姓名、年龄和性别等信息,则声明如下:
这会生成一个包含Name、Age和Sex属性的对象。如果创建另一个对象,如下所示:
Worker和Doctor的类型就是相同的。例如,可以设置Worker = Doctor。
如果所设置的值来自于另一个对象,初始化器就可以简化。如果已经有一个包含Name、Age和Sex属性的类,且有一个该类的实例user,Worker对象就可以初始化为:
user对象的属性名应投射为新对象名Worker。所以Worker对象应有Name、Age和Sex属性。
小天:那可以混起来用不?
老田:可以,如下
小天:这个类不能实例化哦,怎么用?
老田:直接当对象用,如图4-22
图4-22
这些新对象的类型名是未知的。编译器为类型“伪造”了一个名称,但只有编译器才能使用它。我们不能也不应使用新对象上的任何类型引用,因为这不会得到一致的结果。
本文章为天轰穿原创作品,转载请注明出处及作者。
老田:可以用.NET3.0以后出来的一个新特性 – 匿名类型。第2章讨论了var关键字,用于表示隐式类型化的变量。var与new关键字一起使用时,可以创建匿名类型。匿名类型只是一个继承了Object的、没有名称的类。该类的定义从初始化器中推断,类似于隐式类型化的变量。
如果需要一个对象包含某个人的姓名、年龄和性别等信息,则声明如下:
var Worker = new { Name = "天轰穿", Age = 30, Sex = "男" }; |
var Doctor = new { Name = "天轰穿", Age = 30, Sex = "男" }; |
如果所设置的值来自于另一个对象,初始化器就可以简化。如果已经有一个包含Name、Age和Sex属性的类,且有一个该类的实例user,Worker对象就可以初始化为:
var Worker = new { user.Name, user.Age, user.Sex }; |
小天:那可以混起来用不?
老田:可以,如下
var Worker = new { user.Name, user.Age, Sex = "男" }; |
老田:直接当对象用,如图4-22
图4-22
这些新对象的类型名是未知的。编译器为类型“伪造”了一个名称,但只有编译器才能使用它。我们不能也不应使用新对象上的任何类型引用,因为这不会得到一致的结果。
本文章为天轰穿原创作品,转载请注明出处及作者。
相关文章推荐
- 天轰穿C# -vs2010 - 04面向对象的编程之Object基类【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之成员【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之面向对象的编程简介【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之生成和引用项目 【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之重载运算符【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之继承【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之扩展方法 【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之集合概述 【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之抽象类和抽象方法【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之申明和实现 【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之分部类 【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之构造函数之间的调用【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之实现继承【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之虚成员和重写【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之简单数组 【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之运算符重载的示例【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之“对象”【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之类创建类库项目和项目属性【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之访问修饰符【原创】
- 天轰穿C# -vs2010 - 04面向对象的编程之调用基类成员【原创】