Terry's blog

Focus on bigdata and cloud.

博客园 首页 新随笔 联系 订阅 管理
概述: 
    当我们需要对已有类的功能进行扩展时,我们通常会想到继承,继承已有类,然后为其加入新的行为。而C# 3.0中加入的扩展方法特性,则提供了另一种实现功能扩展的方式,我们可以在不使用继承的前提下实现对已有类本身的扩展,这种方法并不会产生新的类型,而是采用向已有类中加入新方法的方式来完成功能扩展。

  在对已有类进行扩展时,我们需将所有扩展方法都写在一个静态类中,这个静态类就相当于存放扩展方法的容器,所有的扩展方法都可以写在这里面。而且扩展方法采用一种全新的声明方式:public static 返回类型 扩展方法名(this 要扩展的类型 sourceObj [,扩展方法参数列表]),与普通方法声明方式不同,扩展方法的第一个参数以this关键字开始,后跟被扩展的类型名,然后才是真正的参数列表。

实例代码:

 static class Extensions
        
{
             
public static int ToInt32(this string source)
             
{
                 
return Int32.Parse(source);
             }
      
           
       }

     
       
class ExtensionMethods
        
{
            
public static void Main()
            
{
                
string aa = "246";
                Console.WriteLine(aa.ToInt32());     
               
            }

        }

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

运行结果:
123

 

posted on 2007-11-21 17:43  王晓成  阅读(940)  评论(0编辑  收藏  举报