知识大全 了解C#特性:对象集合初始化器[1]

Posted

篇首语:笛里谁知壮士心,沙头空照征人骨。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 了解C#特性:对象集合初始化器[1]相关的知识,希望对你有一定的参考价值。

了解C#特性:对象集合初始化器[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

//////图书类///publicclassBook  ///  ///图书名称  ///  publicstringTitleget;set;  ///  ///单价  ///  publicfloatPriceget;set;  ///  ///作者  ///  publicstringAuthorget;set;  ///  ///ISBN号  ///  publicstringISBNget;set;//对象初始化器Bookbook=newBookTitle= Inside ISBN= ;

  现在你想初始化几个就初始化几个 不需要出现这种情况

public Book():this( )public Book(string title):this(title )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;

  这一串的构造方法都是为了应付不同的初始化情况 好了 来看看对象初始化器编译器在后面为我们做了些什么呢?使用Reflector反编译程序集

Book<>g__initLocal =newBook();<>g__initLocal Title= Inside ;<>g__initLocal ISBN= ;Bookbook=<>g__initLocal ;

  C#编译器生成了一个新的局部变量<>g__initLocal 调用Book的默认无参构造方法初始化它 然后对它的属性进行赋值 最后将这个局部变量赋值给book 看到这里 我们应该想到 要使用对象初始化器 那么这个对象必须有一个无参构造方法 如果你给这个方法写了一个有参构造方法而将它的默认无参构造方法覆蓋了并且没有提供一个新的无参构造方法 那么使用对象初始化器编译的时候是不会通过的(不过想不通 为啥C#编译器生成这么一个奇怪的局部变量名字 还有为啥不直接使用book呢) 像下面的代码不更好

Bookbook=newBook();book Title= Inside ;book ISBN= ; cha138/Article/program/net/201311/14838

相关参考

知识大全 C#3.0之对象与集合初始化

C#3.0之对象与集合初始化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们知道在C#中要初

知识大全 C#3.0之自动属性和对象初始化器

C#3.0之自动属性和对象初始化器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!C#中定义属性更加

知识大全 C#索引器

C#索引器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  索引器概述  索引器使得对象可按照与数

知识大全 用构建器自动初始化

    对于方法的创建可将其想象成为自己写的每个类都调用一次initialize()这个名字提醒我们在使用对象之前应首先进行这样的调用但不幸的是这也意味着用户必须记住调用方法在Java中由于提供了名为

知识大全 C#默认构造函数的作用

C#默认构造函数的作用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  构造函数主要用来初始化对象

知识大全 了解C#特性扩展方法[1]

了解C#特性扩展方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在我们的编程生涯中我们

知识大全 php设计模式介绍之迭代器模式

  《PHP设计模式介绍》第八章迭代器模式  类中的面向对象编程封装应用逻辑类就是实例化的对象每个单独的对象都有一个特定的身份和状态单独的对象是一种组织代码的有用方法但通常你会处理一组对象或者集合  

知识大全 了解C#特性扩展方法

了解C#特性扩展方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    在我们的编程生涯中我们要

知识大全 了解C#特性扩展方法[2]

了解C#特性扩展方法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  按照上面的步骤写你就得

知识大全 从内部类继承

  由于内部类构建器必须同封装类对象的一个句柄联系到一起所以从一个内部类继承的时候情况会稍微变得有些复杂这儿的问题是封装类的秘密句柄必须获得初始化而且在衍生类中不再有一个默认的对象可以连接解决这个问题