C#3.0语言新特性之扩展方法
2009-03-10 08:19:45 来源:WEB开发网在上面的示例中,静态的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)
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››扩展WebSphere Portal V6个性化功能
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››扩展数据:如何为 Model 750 服务器选择 I/O 扩展...
- ››扩展 JDT 实现自动代码注释与格式化
- ››扩展 secldap 的功能以验证多个数据源
- ››扩展 JUnit4 以促进测试驱动开发
- ››扩展 JUnit 测试并行程序
- ››扩展的ToolStripEx控件
- ››扩展 Eclipse 的 Java 开发工具
- ››扩展 Eclipse 辅助和规范开发流程
- ››扩展方法 DataTable 和List 相互转换
更多精彩
赞助商链接