科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道C#3.0之对象与集合初始化

C#3.0之对象与集合初始化

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

我们知道在C#2.0中要初始化一个对象可以用构造器,或者声明公有属性,然后在new一个对象之后在对属性赋值。

作者:中国IT实验室 来源:中国IT实验室 2007年9月7日

关键字: 集合 对象 C#

  • 评论
  • 分享微博
  • 分享邮件

    我们知道在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> 0126789 };
//相当于:ICollection<T>.Add(T),即num.Add(0),...

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

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

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

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章