C# 3.0 新特性

    当年 .Net Framework 2.0 刚发布时,泛型(Generics)、匿名方法(Anonymous Methods)、迭代器(Iterators)和不完全类型(Partial Types)被称为 .Net Framework 2.0 的四项新特性。现在随着微软 .Net 3.0、3.5 的发布推广,关于新特性的介绍却都是以 C# 3.0 为题,就连 Linq 这样在 .Net Framework 3.5 中才支持的特性,也算作 C# 3.0 的新特性。这种称呼叫法的改变,也许显示了微软在逐渐地把 .Net、C# 这些概念区分的更清晰,就像当年的 Visual Studio .Net 2003 到 Visual Studio 2005 一样。

    粗粗看来一下 C# 3.0 的新特性:

1. 隐式类型化本地变量(Implicitely typed local variables)

刚看到这个有点 JScript 式的特性,觉得很一般,我甚至不会去用,因为与我要求的清晰、严谨的编码风格不符,呵呵。但看到后面的匿名类型、Linq 查询表达式等特性时,觉得这个还是很有用的。

2. 扩展方法(Extension methods)

不错的特性,省得我为了给一个类加个简单无比的新功能,就非得用组合或继承写个新类。

3. 对象初始化器(Object initializers)

不错,省了一堆大同小异的重载的构造函数。

4. 集合初始化器(Collect initializers)

一般,自从有了 List<T>,需要自己实现 ICollection<T> 接口的机会就不多了。

5. 匿名类型(Anonymous types)

这个也挺有用,省事儿。

6. 隐式类型化数组(Implicitely typed arrays)

是隐式类型化本地变量这一新特性在数组初始化上的延伸。

7. Lambda 表达式(Lambda expressions)

为了使初始化委托和处理事件的程序代码更加简洁,在 .Net 2.0 中引入了匿名方法,在 3.0 中又更进一步,引入了看起来更明快却有些唬人的 Lambda 表达式。

8. 查询表达式(Quer expressions)

强大的 Linq,第 9 条表达式树也是跟 Linq 有关的,这是 C# 3.0 最精华的新特性,有待仔细研究学习。

9. 表达式树(Expression trees)

 

另外,发现在 .Net Framework 3.0 的代码中,简单的 Property 属性可以只写 get、set,连对应的 Field 的声明都省了,好像在定义接口:

class Program
{
    public string Name { get; set; }

    static void Main( string[] args )
    {
        Program p = new Program();
        p.Name = "HelloWorld";
        Console.WriteLine( p.Name );
        Console.Read();
    }
}

这样的代码也可运行,C# 3.0 可真够为程序员着想到家了。

posted on 2008-04-21 20:22  阳春三月  阅读(433)  评论(1编辑  收藏  举报

导航