对象集合初始化器

对象集合初始化器

ID:14319283

大小:47.00 KB

页数:3页

时间:2018-07-27

对象集合初始化器_第1页
对象集合初始化器_第2页
对象集合初始化器_第3页
资源描述:

《对象集合初始化器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、不能不说的C#特性-对象集合初始化器在写一些实体类的时候,我们往往在写构造方法的时候思考很长时间,除了一个无参构造器外还在想需要写几个构造器呢?哪些参数是需要初始化的。现在你再也不需要为这事烦恼了。C#3.0为你提供了对象集合初始化器:/// 

/// 图书类/// public class Book{    ///     /// 图书名称    ///     public string Title { get; set; }    ///     /// 单价    /// 

2、>    public float Price { get; set; }    /// 

    /// 作者    ///     public string Author { get; set; }    ///     /// ISBN号    ///     public string ISBN { get; set; }}//对象初始化器Book book = new Book { Title="Inside COM",ISBN="123-456-789"};现在你想初始化几个就初始化几个,不需要出现这种

3、情况:public Book():this(""){ }public Book(string title):this(title,0){}public Book(string title, float price):this(title,price,""){ }public Book(string title, float price, string isbn){        this.Title = title;        this.Price = price;        this.ISBN = isbn;}这一串的构造方法都是为了应付不同的初始化情况。好了,来看看对象初始化器

4、编译器在后面为我们做了些什么呢?使用Reflector反编译程序集:Book <>g__initLocal0 = new Book();<>g__initLocal0.Title = "Inside COM";<>g__initLocal0.ISBN = "123-456-789";Book book = <>g__initLocal0; C#编译器生成了一个新的局部变量<>g__initLocal0,调用Book的默认无参构造方法初始化它,然后对它的属性进行赋值,最后将这个局部变量赋值给book。看到这里,我们应该想到,要使用对象初始化器,那么这个对象必须有一个无参构造方法,如果你给这个

5、方法写了一个有参构造方法而将它的默认无参构造方法覆盖了并且没有提供一个新的无参构造方法,那么使用对象初始化器编译的时候是不会通过的(不过想不通,为啥C#编译器生成这么一个奇怪的局部变量名字,还有为啥不直接使用book呢)。像下面的代码不更好:Book book = new Book();book.Title = "Inside COM";book.ISBN = "123-456-789";后来我发现我是在debug模式下编译的,换到release模式下变成了这样:Book <>g__initLocal0 = new Book();<>g__initLocal0.Title = "Insid

6、e COM";<>g__initLocal0.ISBN = "123-456-789";被优化了。上面介绍的就是对象初始化器了,那什么是集合初始化器呢?IList books = new List();//这里就使用了对象初始化器,学以致用吧books.Add(new Book { Title = "Inside COM", ISBN = "123-456-789",Price=20 });books.Add(new Book { Title = "Inside C#", ISBN = "123-356-d89",Price=100 });books.Add(new

7、 Book { Title = "Linq", ISBN = "123-d56-d89", Price = 120 });这样的代码没少写吧,实际上也许比这更复杂,有了C#3.0我们睡觉都想笑:IList books = new List {      new Book { Title = "Inside COM", ISBN = "123-456-789",Price=20 },     new

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。