SQL Server 2005和Visual Studio 2005在今年的11月份要Release。这个版本的.net和sql都变化比较大,首先Framework从1.1变为2.0,单从Framework的版本号我们知道是一个大版本号的变化,其实Visual Studio后没有了.Net,所以我们说有了大变化。
下面我们看看C#中有些什么样的变化。
1、泛型编程是C#2.0中最为引人注目的发展,它赋予了类型以参数式多态的能力(我们知道以前有类的多态和方法的多态,现在增加了参数的多态性),大大丰富了类型的设计,也是今后对C#程序员影响最大的技术。如:定义Class ArraryList<T> { ...} 应用ArraryList<int> al = new ArraryList<int>;
这此我们就不对泛型作讲解了,MSDN是最好的帮助文档。
2、匿名方法允许C#程序员以一种“内联”的方式来编写方法代码,从而使得委托实例化的工作更加直观和方便。匿名方法只是一种对程序员来说的简便方法,其生成的IL其实是与以前的实现方式是一样的。但是匿名方法通常建议不要随便使用,很容易带来代码的难维护和易出错。通常我们认为在超过5行的代码量上我们不用匿名方法,而是定义一个委托方法来实现委托。
迭代器则使得C#程序员可以更加方便地编写应用于foreach语句的枚举集合。同样,迭代器也是一种程序员层面的改进,内部的实现机制没有改变,这一切仅发生在编译时,编译器让我们可以少写一些代码而已。我们可以看到增加了yield return 和解yield break关键字。
3、局部类型(partial)可以把一个大类放在几个文件中,或者把比较固定的放在一个文件中,经常变化的放在另一个文件中。
空属类型放在一个新的命名空间下System.Nullable实现在值类型也要可以有Null值,保持和数据类型的匹配,个人觉得这个很有必要。其实空属类型本身也是一个泛型的表现形式。如System.Nullable<T>不过这里的T有一个约束就是一定是值类型。
静态类就没有什么太大意思了,没有静态类的时候我们通常是把类的构造函数置为Private,不过现在直接用static 来修饰类就行了,方便了一些。
这几种技术拓宽了类型的应用,明确了类型的职责,为C#程序员带来诸多类型设计上的便利。
4、另外C#2.0中还有属性访问器的保护级别,命名空间别名限定符等其它杂项技术。
请区别属性修饰符和属性访问器修饰符。
以前我们有类的别名称,现在增加了命名空间的别名。使用命名空间别名限定符::来避免不同命名空间中类型名称冲突的问题。
同时还增加了Pragma指示符(我们用[Obsolete]特性来标识一个已方法被废弃),Conditional特性类和定长buffer的应用。
总之,这次改动是巨大的,虽然变化是大的,不过秉着向下兼容的原则,1.1的代码会全部兼容,只是功能的增强和易用性的增强。
要想从1.1顺利过渡到2.0还需要我们提前作此准备,你准备好了吗?