您的位置: 旅游网 > 八卦 >> 哥哥

之对象与集合初始化覆盖

发布时间:2021-10-26 07:19:27

我们知道在C#2.0中要初始化一个对象可以用构造器,或者声明公有属性,然后在new一个对象之后在对属性赋值。必须一步一步的来,在C#3.0中可以有一种很简单的方法对对象和集合进行初始化工作。

看个例子:

publicclassPoint...{

当时我内心从高兴变成了发狂 intx,y;

publicintX...{get...{returnx;}set...{x=value;}}

publicintY...{get...{returny;}set...{y=value;}}

}

vara=newPoint...{X=0,Y=1};

//相当于:vara=newPoint();a.X=0;a.Y=1;

//集合初始化器:

Listintnum=newListint...{0,1,2,6,7,8,9};

//相当于:d(T),即d(0),...

我们明显的看到初始化工作又被简单化了。注意这里用到的技术仍然是编译时技术,也就是编译器会在背后替你做好多工作。而不是运行时的技术。

从上面我们可以看出来,一个对象要想像上面的那种形式初始化,必须满足几个条件:首先必须得有公有的无参构造器,否则编译器就无法new出一个对象,更别说初始化了。其次在进行赋值的时候,这些属性必须是共有的。这点就不必解释了。

如果想看看背后编译器做了哪些工作,我们可以用ILDasm对上面的代码进行反汇编,就可以看到背后自动生成的一些东西了。

查看本文来源

成都男科
西宁白癜风好医院
绵阳白癜风哪里治疗好
猜你会喜欢的
猜你会喜欢的