| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 376 人关注过本帖
标题:C#3.0之对象与集合初始化
只看楼主 加入收藏
jhbdqn
Rank: 1
等 级:禁止访问
帖 子:14
专家分:0
注 册:2008-11-3
收藏
 问题点数:0 回复次数:0 
C#3.0之对象与集合初始化
我们知道在C#2.0中要初始化一个对象可以用构造器,或者声明公有属性,然后在new一个对象之后在对属性赋值。必须一步一步的来,在C#3.0中可以有一种很简单的方法对对象和集合进行初始化工作。
看个例子:
public class Point ...{
int x, y;
public int X ...{ get ...{ return x; } set ...{ x = value; } }
public int Y ...{ get ...{ return y; } set ...{ y = value; } }
}
var a = new Point ...{ X = 0, Y = 1 };
//相当于:var a = new Point(); a.X = 0; a.Y = 1;
//集合初始化器:
List<int> num= new List<int> ...{ 0, 1, 2, 6, 7, 8, 9 };
//相当于:ICollection<T>.Add(T),即num.Add(0),...
    我们明显的看到初始化工作又被简单化了。注意这里用到的技术仍然是编译时技术,也就是编译器会在背后替你做好多工作。而不是运行时的技术。
    从上面我们可以看出来,一个对象要想像上面的那种形式初始化,必须满足几个条件:首先必须得有公有的无参构造器,否则编译器就无法new出一个对象,更别说初始化了。其次在进行赋值的时候,这些属性必须是共有的。这点就不必解释了。
    如果想看看背后编译器做了哪些工作,我们可以用ILDasm对上面的代码进行反汇编,就可以看到背后自动生成的一些东西了。
搜索更多相关主题的帖子: 对象 
2008-11-03 20:20
快速回复:C#3.0之对象与集合初始化
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046933 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved