C#3.0学习(3)---匿名类型
2008-03-09 18:22
211 查看
匿名类型是在初始化的时候根据初始化列表自动产生类型的一种机制,利用对象初始化器来创建匿名对象的对象。如:
在创建对象的语句中用到了var和new两个关键字,var关键字用来声明一个匿名类型的对象名字,var和Object不同,她是一种强类型,在此是起到了一个占位符的作用,编译时编译器会推断出实际类型。new关键字后直接是一对大括号,并不是类型名称,因为匿名类型的名字是在编译时由编译器自动生成。大括号里的Name和Age为匿名类型的属性,可以看到是在Name和Age的后面直接赋值,并没有指明类型,也将由编译器来推断出他们的类型,比如编译后会将Name推断为string型,Age推断为Int型。所以我们可以看到匿名类型给我们带来了很大的方面和灵活性,同时也将使代码变得不易看懂。上面的代码经过编译后会产生类似如下代码:
在同一个程序中如果定义的不同匿名类型中的对象初始化器中的名称,类型,和顺序都相同,将会长生同一个匿名类型的不同实例,如下:
我们可以这样来访问匿名类型中的成员
var oec=new {Name="oec2003", Age=100}
在创建对象的语句中用到了var和new两个关键字,var关键字用来声明一个匿名类型的对象名字,var和Object不同,她是一种强类型,在此是起到了一个占位符的作用,编译时编译器会推断出实际类型。new关键字后直接是一对大括号,并不是类型名称,因为匿名类型的名字是在编译时由编译器自动生成。大括号里的Name和Age为匿名类型的属性,可以看到是在Name和Age的后面直接赋值,并没有指明类型,也将由编译器来推断出他们的类型,比如编译后会将Name推断为string型,Age推断为Int型。所以我们可以看到匿名类型给我们带来了很大的方面和灵活性,同时也将使代码变得不易看懂。上面的代码经过编译后会产生类似如下代码:
class Anonymous1 { private int _name = oec2003; private int _age = 100; public int a { get { return _name; } set { _name = value; } } public int b { get { return _age; } set { _age = value; } } }
在同一个程序中如果定义的不同匿名类型中的对象初始化器中的名称,类型,和顺序都相同,将会长生同一个匿名类型的不同实例,如下:
var oec1=new {Name="oec2003" ,Age=100} var oec2=new {Name="oec2004" ,Age=200} oec1=oec2
我们可以这样来访问匿名类型中的成员
var oec=new {Name="oec2003", Age=100} string name=oec.Name; int age=oec.Age
相关文章推荐
- C#3.0学习(3)―匿名类型
- C#3.0 新特性学习笔记(3):匿名类型
- [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
- C#3.0 中 隐式类型变量、匿名类型
- [读书笔记]C#学习笔记五: C#3.0自动属性,匿名属性及扩展方法
- C#学习笔记-索引器,指针类型,隐式类型,扩展方法,分部方法,匿名类型
- C#3.0新特性之匿名类型
- [易学C#]C#3.0语言新特性之匿名类型
- C#3.0技术探讨(1):匿名类型 Anonymouse Type
- C#3.0之匿名类型
- 实例 C#3.0与C#2.0相比之新特性(三)---匿名类型 匿名变量
- C# 3.0 新特性 学习(二):匿名类型、扩展方法
- C#3.0 中 隐式类型变量、匿名类型
- C#3.0特性之---匿名类型
- C#3.0新特性(三)-详说自动属性和匿名类型
- [javase学习笔记]-6.5 类类型参数与匿名对象
- C#学习笔记三: C#2.0泛型 可控类型 匿名方法和迭代器
- c#3.0,使用传递出来的匿名类型
- [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
- [易学C#]C#3.0语言新特性之匿名类型(转)