WEB开发网
开发学院软件开发C语言 C#3.0语言新特性之扩展方法 阅读

C#3.0语言新特性之扩展方法

 2009-03-10 08:19:45 来源:WEB开发网   
核心提示: 在上面的示例中,静态的Extensions类中有两个扩展方法,C#3.0语言新特性之扩展方法(2),如方法ToInt32是对string类的扩展,它为string类加入了名为ToInt32的方法,我们可以使用using导入命名空间指令导入了上面例子中的C20_1命名空间:using C20

在上面的示例中,静态的Extensions类中有两个扩展方法,如方法ToInt32是对string类的扩展,它为string类加入了名为ToInt32的方法,该方法没有参数,并返回一个int类型的值,它将完成数字字符向整数的转换。有了这个扩展方法之后,就可对任意string类的对象调用ToInt32方法了,该方法就像其本身定义的一样。

其实,扩展方法和正常的静态方法具有完全相同的功能。另外,一旦导入了扩展方法,就可以用调用实例方法的语法来调用扩展方法。

20.3.2 导入扩展方法

扩展方法使用using导入命名空间指令来导入。除了导入一个命名空间中的类型以外,一个using导入命名空间指令还可以导入一个命名空间中所有的静态类中所有的扩展方法。最后,导入的扩展方法表现为其第一个参数的类型的附加方法,并且其优先级比一般的实例方法低。例如,我们可以使用using导入命名空间指令导入了上面例子中的C20_1命名空间:

using C20_1

导入扩展方法之后,我们就可以这样来调用它了。代码如下所示:

static void Main(string[] args)

 {

      string s = "1000";

      int i = s.ToInt32();   // 和Extensions.ToInt32(s)一样

      int[] digits = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

      int[] a = digits.Slice(4, 3); // 和Extensions.Slice(digits, 4, 3)一样

 }

20.3.3 调用扩展方法

下面描述了扩展方法调用的详细规则。在下面这些形式的方法调用中:

 

expr . identifier ()

expr . identifier (args)

expr . identifier <typeargs>()

expr . identifier <typeargs>(args)

Tags:语言 特性 扩展

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接