《深入理解C# 3.x的新特性》博文系列汇总

较之C# 2.0, C# 3.x引入了一系列新的特性,为我们编程带来很大的便利,通过有效地利用这些新特性,我们可以编写出更加简洁、优雅的程序。不过这些新特性仅仅是编译器给我们耍的小花招:在编译的时候加入一些必要的Code,使这些在C# 2.0角度看略显“残缺”的Code变得“完整”,实际上最终生成的Assembly和在C# 2.0时代并没有本质的不同。为此,有些人对这些新特性不以为然,觉得仅仅是一些表面文章。但是我的观点是:既然这些特性能给我们带来便利,干嘛不用呢?

本系列的着重点并不是放在如果去应用这些新特性上(实际上使用这些特性是很简单的),而是更多地落在对这些特性的实现的介绍上面:编译器到底在编译的时候加了哪些额外的代码来完善这些略显“残缺”的代码。
[第1篇] Anonymous Type
Anonymous Type允许我们定义一个对象并初始化一组任意的属性列表,而这个对象对应的Type并不是预先定义的。比如:

   1: var v = new{ID = Guid.NewGuid(), Name= "Zhang San" };

 

[第2篇] Extension Method
通过Extension Method,我们可以不改变Type定义的前提下对其方法成员进行扩展:我们在另一个Type中定一个一个特性的Static 方法,使之作为这个Type的Extension Method,这样的方法可以象其它方法一样的方法进行调用。LINQ的Operator,比如Where,From,Order by等,都是通过这样的进行定义的。

 

[第3篇] Lambda Expression

Lambda Expression被广泛使用到LINQ中,其本质就是一个Delegate。在这部分中,我将介绍Lambda Expression是如何通过一个Delegate来实现的。

 

[第4篇] Automatically Impemented Property

有了Automatically Implemented Property,我们可以简化传统的private field + public property的属性定义方式,就像这样:

   1: public class Vector 
   2: {
   3:      public double X { get; set; }
   4:      public double Y { get; set; }
   5: }

 

[第5篇] Object Initializer & Collection Initializer

Object Initializer & Collection Initializer是我将对象的创建和初始化合二为一:通过Object Initializer使用一次调用创建一个对象和初始化其属性成员,通过Collection Initializer在创建Collection对象的时候同时初始化该Collection的初始成员: 

   1: Vector v = new Vector { X = 1, Y = 2 };          
   2: IList<string> list = new List<string> { "Zhang San", "Li Si", "Wang Wu" };
作者:Artech
出处:http://artech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2007-10-07 12:38 Artech 阅读(12305) 评论(29) 编辑 收藏

 回复 引用 查看   
#1楼 2007-10-07 14:26 Anytao      
坐一次沙发:-)
你的支持真是我们莫大的动力,精品活动系列又有了宝贵的财富。
“合抱之木,生于毫末;九层之台,起于垒土”,让我颇有同感,这个系列活动也需要一个积累的阶段。一段时间了,形成的系列还不是很多,可能还得靠邀请制来促起一定的规模。

 回复 引用 查看   
#2楼 2007-10-07 14:32 Justin      
顶一下,一直关注Artech的文章
 回复 引用 查看   
#3楼 2007-10-07 14:41 Anytao      
系列链接已经加入团队公告,我自己加了:-)
 回复 引用 查看   
#4楼[楼主] 2007-10-07 14:58 Artech      
@Justin
谢谢你的关注

 回复 引用 查看   
#5楼[楼主] 2007-10-07 15:00 Artech      
@Anytao
原子里相关的内容本来就不是很多,形成系列的就更少了。邀请制是一个好的方式。

 回复 引用 查看   
#6楼 2007-10-07 15:05 Anytao      
@Artech
团队公告加入链接有问题,好像可加入的内容量有限制,我找时间联系一下dudu看看。刚加好的链接,莫明其妙又没了。

 回复 引用 查看   
#7楼[楼主] 2007-10-07 15:10 Artech      
@Anytao
其实我之前已经加好了,不过现在好了,我重新加了^_^

 回复 引用 查看   
#8楼 2007-10-08 10:04 zguosir      
很精彩的系列。

我还是很传统一些,不太喜欢c#3.0带来的这些所谓的新东西,在内心深处有些排斥:)不过3.0的浪潮滚滚袭来,让人不得不跟上。用不用是一回事,但无论用不用都要学啊:)

 回复 引用 查看   
#9楼 2007-10-08 10:09 武眉博<活靶子.Net>      
都开始研究3.0啦
 回复 引用 查看   
#10楼[楼主] 2007-10-08 10:49 Artech      
@zguosir
了解一下总不是坏事^_^

 回复 引用 查看   
#11楼[楼主] 2007-10-08 10:50 Artech      
@武眉博&lt;活靶子.Net&gt;
满足一下好奇心^_^

 回复 引用 查看   
#12楼 2007-10-08 10:52 jillzhang      
3.0还是有不少改进的,试用了三天,感觉蛮爽
 回复 引用 查看   
#13楼 2007-10-08 11:19 Robert Lee      
Collection Initializer似乎2.0就可以吧?
 回复 引用   
#14楼 2007-10-08 17:09 StrongBird[未注册用户]
@Robert Lee
以前只能对数组进行类似的初始化。

 回复 引用 查看   
#15楼 2007-10-09 20:51 jillzhang      
@StrongBird
其实这样本质上应该没有改变,只是能提高开发效率而已

 回复 引用 查看   
#16楼 2007-10-10 17:38 装配脑袋      
研究一下VB9的新特性吧。不然有那么好的XML语言集成能力,就因为C#没有所以就不为人知太可惜了。

 回复 引用 查看   
#17楼[楼主] 2007-10-10 21:09 Artech      
@装配脑袋
确实VB9中对XML的支持是C#不能比拟的。

 回复 引用   
#18楼 2007-10-11 15:36 xiongjianwen[未注册用户]
又来麻烦楼主你了,呵呵~~~
<add path="*.jpg" verb="*" type="CustomHandler.JpgHandler"/>
这个是为请求一个jpg图像的一个处理器 我不明白我们每次请求的大多数是一个aspx文件 在Url中我们不能*.jpg 为什么还能为图像写一个处理器??
期待楼主的回答...

 回复 引用 查看   
#19楼[楼主] 2007-10-11 15:47 Artech      
@xiongjianwen
原则上,任何Host在IIS Web Server上的任何资源,都可以设置通过在IIS上设置对应的ISAPI Mapping交给对应的ISAPI来处理。

即使在默认的情况下,ASP.NET不是是仅仅处理aspx,比如web Service,Host 在IIS上的Remoting都是通过ASP.NET从IIS接管并处理的。

 回复 引用 查看   
#20楼 2007-10-12 08:26 wwei      
严重关注,认真学习中。很喜欢,
 回复 引用   
#21楼 2007-10-12 08:59 xiongjianwen[未注册用户]
谢谢楼主的回答,昨天也上网查了资料,每次楼主的回复都能让我学到很多!!
真心的感谢楼主!!

 回复 引用 查看   
#22楼 2007-10-14 06:12 张旋      
关注!期待活动的继续发展!
 回复 引用 查看   
#23楼[楼主] 2007-10-14 16:48 Artech      
@张旋
谢谢关注!

 回复 引用 查看   
#24楼 2010-10-22 14:12 碎雨听音      
此文不错,值得推荐!
 回复 引用 查看   
#25楼 2010-10-26 11:07 Eason Wu      
此文不错,值得推荐!
 回复 引用 查看   
#26楼 2010-11-09 14:17 静羊羊      
此文不错,值得推荐!
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 915969 FoaTgh4gkWk=