Develop every application as an art using the most suitable technologies!
本blog原创文字(标明[原创]字样)只代表本人某一时间内的观点或结论,与本人所在公司没有任何关系。第三方若用于商业用途的转载,须取得本人授权。一般的引用、转载请标明出处!
较之C# 2.0, C# 3.x引入了一系列新的特性,为我们编程带来很大的便利,通过有效地利用这些新特性,我们可以编写出更加简洁、优雅的程序。不过这些新特性仅仅是编译器给我们耍的小花招:在编译的时候加入一些必要的Code,使这些在C# 2.0角度看略显“残缺”的Code变得“完整”,实际上最终生成的Assembly和在C# 2.0时代并没有本质的不同。为此,有些人对这些新特性不以为然,觉得仅仅是一些表面文章。但是我的观点是:既然这些特性能给我们带来便利,干嘛不用呢?
本系列的着重点并不是放在如果去应用这些新特性上(实际上使用这些特性是很简单的),而是更多地落在对这些特性的实现的介绍上面:编译器到底在编译的时候加了哪些额外的代码来完善这些略显“残缺”的代码。 1. Anonymous Type Anonymous Type允许我们定义一个对象并初始化一组任意的属性列表,而这个对象对应的Type并不是预先定义的。比如:
2. Extension Type 通过E xtension Method,我们可以不改变Type定义的前提下对其方法成员进行扩展:我们在另一个Type中定一个一个特性的Static 方法,使之作为这个Type的E xtension 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的属性定义方式,就像这样:
5. Object Initializer & Collection Initializer
Object Initializer & Collection Initializer是我将对象的创建和初始化合二为一:通过Object Initializer使用一次调用创建一个对象和初始化其属性成员,通过Collection Initializer在创建Collection对象的时候同时初始化该Collection的初始成员:
posted on 2007-10-07 12:38 Artech 阅读(4391) 评论(26) 编辑 收藏 所属分类: .NET Framework 、C# 3.0 & LINQ
坐一次沙发:-) 你的支持真是我们莫大的动力,精品活动系列又有了宝贵的财富。 “合抱之木,生于毫末;九层之台,起于垒土”,让我颇有同感,这个系列活动也需要一个积累的阶段。一段时间了,形成的系列还不是很多,可能还得靠邀请制来促起一定的规模。 回复 引用 查看
顶一下,一直关注Artech的文章 回复 引用 查看
系列链接已经加入团队公告,我自己加了:-) 回复 引用 查看
@Justin 谢谢你的关注 回复 引用 查看
@Anytao 原子里相关的内容本来就不是很多,形成系列的就更少了。邀请制是一个好的方式。 回复 引用 查看
@Artech 团队公告加入链接有问题,好像可加入的内容量有限制,我找时间联系一下dudu看看。刚加好的链接,莫明其妙又没了。 回复 引用 查看
@Anytao 其实我之前已经加好了,不过现在好了,我重新加了^_^ 回复 引用 查看
很精彩的系列。我还是很传统一些,不太喜欢c#3.0带来的这些所谓的新东西,在内心深处有些排斥:)不过3.0的浪潮滚滚袭来,让人不得不跟上。用不用是一回事,但无论用不用都要学啊:) 回复 引用 查看
都开始研究3.0啦 回复 引用 查看
@zguosir 了解一下总不是坏事^_^ 回复 引用 查看
@武眉博<活靶子.Net> 满足一下好奇心^_^ 回复 引用 查看
3.0还是有不少改进的,试用了三天,感觉蛮爽 回复 引用 查看
Collection Initializer似乎2.0就可以吧? 回复 引用 查看
@Robert Lee以前只能对数组进行类似的初始化。 回复 引用 查看
@StrongBird 其实这样本质上应该没有改变,只是能提高开发效率而已 回复 引用 查看
研究一下VB9的新特性吧。不然有那么好的XML语言集成能力,就因为C#没有所以就不为人知太可惜了。 回复 引用 查看
@装配脑袋 确实VB9中对XML的支持是C#不能比拟的。 回复 引用 查看
又来麻烦楼主你了,呵呵~~~ <add path="*.jpg" verb="*" type="CustomHandler.JpgHandler"/> 这个是为请求一个jpg图像的一个处理器 我不明白我们每次请求的大多数是一个aspx文件 在Url中我们不能*.jpg 为什么还能为图像写一个处理器?? 期待楼主的回答... 回复 引用 查看
@xiongjianwen 原则上,任何Host在IIS Web Server上的任何资源,都可以设置通过在IIS上设置对应的ISAPI Mapping交给对应的ISAPI来处理。 即使在默认的情况下,ASP.NET不是是仅仅处理aspx,比如web Service,Host 在IIS上的Remoting都是通过ASP.NET从IIS接管并处理的。 回复 引用 查看
严重关注,认真学习中。很喜欢, 回复 引用 查看
谢谢楼主的回答,昨天也上网查了资料,每次楼主的回复都能让我学到很多!! 真心的感谢楼主!! 回复 引用 查看
关注!期待活动的继续发展! 回复 引用 查看
@张旋 谢谢关注! 回复 引用 查看
Powered by: 博客园 Copyright © Artech