Evil 域

当Evil遇上先知

导航

预计微软会2009年秋季发布Visual Studio 2010 RTM,2010到底会给我们带来什么新的功能,让我们先睹为快。

由于VS 2010尚未开发完成,这里介绍是功能并不一定会随RTM发布,而且也有可能在设计上发生变更。

一、语言(C#)

1. Dynamic

Dynamic为C#提供了类似于VB中后期绑定的功能。例如:

 

dynamic x = 100;
x.Foo();


从强类型的角度看这段代码,这显然是一个编译错误。如果我们不看Dynamic关键字,x就被推断为Integer类型,而Integer怎么可以调用Foo()方法?然而,我们在处理Javascript或者调用COM对象等的时候,经常会用到一个不知道什么类型去调用一个只有在运行时才知道的方法。Dynamic关键字告诉编译器,这个对象要在运行时动态绑定。运行时,CLR检查对象x是不是有一个合适的Foo方法——一个没有参数的方法能够绑定到x。

Dynmaic可以帮助大家避免一些为了强类型化而进行强制类型转化的代码。

在上例中,由于Integer类型没有Foo()方法,直到程序运行时才抛出异常。

Dynamic

2. Named / Optional Parameters

大家有没有过这样的麻烦:写一个方法,需要有2个参数,但是其都有默认值。为了方便调用就需要一个2的2次方个重载来完成。例如:

 

Code

 

引入了可选参数后,以上四个重载就可以合并成一个非常简单的形式:

 

Code

 

调用时,如果不传任何参数,那么,将直接使用两个参数的默认值;如果传入一个整形,那么,将调用Sub(int a, "str")……依次类推。这里还有一个小的技巧,你甚至可以不按正常顺序来调用可选参数,方法就是加上“形参名称 : ”。例如,可以这样调用上面定义的方法:

 

Code

 

 OptionalParameters002
非常的灵活。需要注意的是,一旦定义了一个Optional参数,那么,其后面的参数都必须是Optional的。也就是说,从左往右,一旦有了Optional参数,以后的参数就都需要提供默认值。

 

下篇,打算介绍部分IDE的新功能:

1. Call Hierarchy(点击查看)

2. Quick Search

3. Highlight reference

4. Generate from usage