深入理解C# 3.x的新特性系列总结
日期:2007年10月10日 作者: 查看:[大字体 中字体 小字体]-
“合抱之木,生于毫末;九层之台,起于垒土”,如果把.NET比作一栋摩天大楼的话,CLR就是这座大楼的基石。CLR功能强大而复杂,它不仅为我们的.NET Program提供一个托管的执行环境,还为我们引入了一系列全新的概念:JIT,GC,MSIL,AppDomian,Assembly等等。深入了解CLR有利于我们开发高质量的.NET Application。为此,Anytao邀请我一起创建了CLR基础研究团队,希望搭建一个学习、交流的平台一起讨论CLR。自该团队创办以来,Anytao为此费心不少,在他的提议下,CLR基础研究团队推出了一个叫做“精品系列推广活动”。作为该团队共同创办人的我,深感惭愧,只能尽我所能写一些相关的文章支持这个活动,为此有了这篇关于C# 3.x的新特性的总结。
较之C# 2.0, C# 3.x引入了一系列新的特性,为我们编程带来很大的便利,通过有效地利用这些新特性,我们可以编写出更加简洁、优雅的程序。不过这些新特性仅仅是编译器给我们耍的小花招:在编译的时候加入一些必要的Code,使这些在C# 2.0角度看略显“残缺”的Code变得“完整”,实际上最终生成的Assembly和在C# 2.0时代并没有本质的不同。为此,有些人对这些新特性不以为然,觉得仅仅是一些表面文章。但是我的观点是:既然这些特性能给我们带来便利,干嘛不用呢?
本系列的着重点并不是放在如果去应用这些新特性上(实际上使用这些特性是很简单的),而是更多地落在对这些特性的实现的介绍上面:编译器到底在编译的时候加了哪些额外的代码来完善这些略显“残缺”的代码。
1. Anonymous Type
Anonymous Type允许我们定义一个对象并初始化一组任意的属性列表,而这个对象对应的Type并不是预先定义的。比如:
var v = new{ID = Guid.NewGuid(), Name= "Zhang San" };
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的属性定义方式,就像这样:
public class Vector {
public double X { get; set; }
public double Y { get; set; }
}
5. Object Initializer & Collection Initializer
Object Initializer & Collection Initializer是我将对象的创建和初始化合二为一:通过Object Initializer使用一次调用创建一个对象和初始化其属性成员,通过Collection Initializer在创建Collection对象的时候同时初始化该Collection的初始成员:
Vector v = new Vector { X = 1, Y = 2 };
IListlist = new List { "Zhang San", "Li Si", "Wang Wu" }; - [1] [2] 下一页
-
- 深入理解C# 3.x的新特性系列总结 相关文章:
- ·Windows 7操作系统新技术深入探讨
- ·深入了解微软Windows 7系统
- ·深入分析Windows操作系统死机问题
- ·用Photoshop加深减淡工具巧抠婚纱
- ·由浅入深实践学习 Web 标准
- ·Flash中有关层的深度处理的常用函数
- ·关于Flash层的深度处理问题
- ·创业之路--站在肤浅的角度谈点深度的问题
- ·关于无效点击-AdSense团队资深专员如是说
- ·深层优化 提高网站的访问速度
- 深入理解C# 3.x的新特性系列总结 相关软件
- ·《深海探索》海底版魔兽试玩
- ·《深海冒险》游戏试玩
- ·深海狂鲨
- ·《深入敌后:雷神战争》火爆试玩
- ·手机游戏:深入黑帮
- ·《1979—2000深圳重大决策和事件民间观察》
- ·冒险小说:《深海探秘》
- ·《深巷里的琵琶声》 :陆文夫散文百篇
- ·深深太平洋
- ·偶是深圳一个贼
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:个人空间后台上传‘文件’大小说明
精品推荐
热点TOP10
- ·用c#监控网络流量
- ·C#编写的windows计算器-源代码
- ·飞机订票系统设计
- ·C/C++笔试、面试题目大汇总
- ·《俄罗斯方块》程序编写详解
- ·Windows API-GDI入门基础知识详解(2)
- ·socket编程原理
- ·打字游戏
- ·七年IT奋斗纪实及感悟
- ·C #中的几个线程同步对象方法
- ·牛顿和拉格朗日插值算法
- ·VC++动态链接库编程之MFC扩展 DLL
- ·C# 操作文件
- ·如何用C#编写文本编辑器
- ·c#操作word表格
- ·编程特例篇——LOGO语言
- ·Raw Socket(原始套接字)实现Sniffer(嗅探)
- ·C#编程中的 New 关键词的几种用法
- ·实战开发 C# 索引器学习笔记
- ·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
特别推荐
- ·C#程序开发中的常用函数汇总
- ·C#数据库操作的三种经典用法
- ·C/C++笔试、面试题目大汇总
- ·Beej的网络socket编程指南
- ·socket编程原理
- ·C语言的常用库函数使用方法分析及用途
- ·在C语言中如何处理时间和日期
- ·C++设计模式之Singleton
- ·VC++动态链接库编程之MFC扩展 DLL
- ·TCP/IP网络重复型服务器通信软件的设计
- ·DirectX游戏开发入门
- ·经典与现代的结合:在MFC中集成RAD .NET框架
- ·Windows API-GDI入门基础知识详解(2)
- ·Visual C++ 入门精解
- ·C#基础概念二十五问
- ·用C#实现pdf文件的完整性验证
- ·成为嵌入式程序员应知道的0x10个问题
- ·TCP/IP编程实现远程文件传输
- ·几个C#编程的小技巧
- ·C# 编码规范和编程好习惯
