2010-07-04 23 views
10

我在.NET 1.1项目上工作了很长时间,而且我被困在C#1.0中,现在我想赶上最新,最棒的功能。C#2.0,3.0和4.0中的新功能列表

Google在C#v2.0中返回了很多关于新功能的信息,但是对于版本3和4,我只找到部分信息。

Internet上是否有某处列出了C#在v2.0,v3.0和v4.0中引入的所有新功能?

回答

23

完整的插件为我自己的书,但希望不是免费:获取second edition of C# in Depth的早期访问版本。它会跳过C#1,但进入细节上的每一项功能C#2,3和4

如果你只是想的功能列表,虽然,从附录C:

C#2.0:

C#2的主要特性是泛型,可空类型,匿名方法以及其他与委托相关的增强和迭代器块。此外,还引入了几个较小的功能:部分类型,静态类,为getter和setter使用不同访问修饰符的属性,名称空间别名,pragma指令和固定大小的缓冲区。

C#3.0:

C#3主要内置朝LINQ,虽然许多特征是有用的其它地方。 自动属性,数组和局部变量的隐式类型,对象和 集合初始值设定项和匿名类型都在章节XREF ch8中进行了介绍。 Lambda表达式和表达式树扩展了版本2.0中的与代表相关的进度 ,扩展方法提供了查询表达式的最后一个成分。分部方法只在C#3增加,虽然部分机型本身是用C#2正如马克在评论中指出,通用的类型推断在C#中获得了相当大的提升3.

C#4.0:

C#4.0具有一些针对互操作性的特性,但并不具有与C#3.0一样的单一性。再次, “小”功能(命名参数,可选 参数,更好的COM互操作,通用方差)和动态 键入的巨大功能之间存在明显的分歧。

我对C# 2C# 3有一个“bluffers指南”,但我还没有完成与C#4等效的工作,但我很害怕。

+1

不错的总结(当然)。我唯一需要添加的东西(不要抓我的头)是C#3.0中更强大的泛型类型推理 - 偶然编写不兼容2.0的代码令人惊讶地很简单。 – 2010-07-04 15:23:35

+0

@马克:哦,真的。将补充说。 – 2010-07-04 15:30:27

+0

“命名空间别名”?你的意思是输入别名或外部别名? – Timwi 2010-09-15 06:52:42

2
  • C#3.0:

隐式类型的局部变量
匿名类型
扩展方法
对象和集合初始化
lambda表达式
查询表达式
表达式树

3

从1.1到2.0(IMO)的最大变化是introduction of generics。泛型也是2.0以来许多其他.NET技术的基础。我建议你开始你的研究,真正了解泛型很好。