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

Posted

篇首语:博观而约取,厚积而薄发。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 了解C#特性:对象集合初始化器[2]相关的知识,希望对你有一定的参考价值。

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

  后来我发现我是在debug模式下编译的 换到release模式下变成了这样

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

  被优化了 上面介绍的就是对象初始化器了 那什么是集合初始化器呢?

IList<Book>books=newList<Book>();//这里就使用了对象初始化器 学以致用吧books Add(newBookTitle= Inside ISBN= Price= );books Add(newBookTitle= InsideC# ISBN= d Price= );books Add(newBookTitle= Linq ISBN= d d Price= );

  这样的代码没少写吧 实际上也许比这更复杂 有了C# 我们睡觉都想笑

IList<Book>books=newList<Book>  newBookTitle= Inside ISBN= Price=   newBookTitle= InsideC# ISBN= d Price=   newBookTitle= Linq ISBN= d d Price= ;

  还是像刚才一样 我们来欣赏一下C#编译器为我们生成的代码

List<Book><>g__initLocal =newList<Book>();  Book<>g__initLocal =newBook();  <>g__initLocal Title= Inside ;  <>g__initLocal ISBN= ;  <>g__initLocal Price= f;  <>g__initLocal Add(<>g__initLocal );  Book<>g__initLocal =newBook();  <>g__initLocal Title= InsideC# ;  <>g__initLocal ISBN= d ;  <>g__initLocal Price= f;  <>g__initLocal Add(<>g__initLocal );  Book<>g__initLocal =newBook();  <>g__initLocal Title= Linq ;  <>g__initLocal ISBN= d d ;  <>g__initLocal Price= f;  <>g__initLocal Add(<>g__initLocal );

  从上面的代码来看 编译器自动的调用了List的无参构造方法 然后实例化一个个的Book 再一个个的Add进去 和我们原来的做法没有什么不同 但是 这是编译器为我们做的 所以简省了我们很多的编码工作

  对象集合初始化器就算介绍完了 有人也许会说 不就是个syntx sugar么 有什么 是的 确实是个语法糖 在编译器发展早期 编译器科学家门一直在想方设法的优化编译器生成的代码 这个时候 编译器做的主要是对机器优化 因为那个时候机器的时间非常宝贵 机器运算速度也不快 今天我们有了足够好的机器了(但并不是说我们可以不关注性能的编写程序) 而且作为编写软件的人来说 比机器的时间宝贵得多 所以今天的编译器也在向人优化了 从编程语言的发展之路来讲 今天的编程语言比昨天的语言更高级 也更人性化了 我们只要编写更少的代码 更符合人的思维的代码 而只要关注我们值的关注的地方 体力活儿就交给编译器吧

  附加

  刚开始想想这对象集合初始化器也许就一鸡肋 没啥用 不就减少一点点代码么 像这种简单的初始化工作 大部分代码生成器都可以来干 后来在研究匿名类型的时候突然发现 如果没有这个对象初始化器 匿名类型是不是要复杂一些?或者就是难以实现?

  var test = newKey= test Value= test ;如果没有对象初始化器 匿名类型该怎么办?

cha138/Article/program/net/201311/14837

相关参考

知识大全 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#特性扩展方法[2]

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

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

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

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

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

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

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

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

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

知识大全 实战开发C# 索引器学习笔记[2]

实战开发C#索引器学习笔记[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  备注: