c# 扩展方法

c#3.0(VS2008)支持在任何类型上扩展生成自定义的方法。比如说想在string类型的对象里面多一个ToInt32(),来方便的将字符转换成整形。
在实现的过程中的关键字为static和this

下面是一个string类型中新建一个ToInt32的自定义方法

public static class Extension//必须先声明一个静态类,类名随意
    {
        public static int ToInt32(this string In)//扩建的方法必须是静态方法,参数里面必须含有this关键字,this关键字后面的类型为需要扩展的类型
        {
            return Convert.ToInt32(In);
        }
    }
那么在使用string的对象的时候,会多出一个ToInt32的方法
static void Main(string[] args)
{
       string a = "1";
       int b = a.ToInt32();
       Console.ReadLine();
 }
扩展方法用途:
扩展方法尤其在很多类需要同样的方法,而这些类又无法继承其它类时特别有用。当然,在要对某个类进行扩展,但我们并没有源代码时,扩展方法也可以派上用场。


注: 1. ClientClass 表示你要绑定到的类型。编译器根据这一类型来决定该方法绑定到那种类型上。
          refObj 表示当前的对象。即调用者的实例的一个引用。
       2. 指示绑定到的类型的参数必须由 this 修饰。从这一点可以看出。 This 关键字表示了 EnlargeClass 在当前的上下文的一个引用。
         注意: refObj 并不是一个指向同一对象的指针。它是一个原对象的引用复本,是否能够影响到原对象取决于原对象的类型(引用或者值类型)。
       3. 指示类型绑定的参数必须处于该方法的第一个位置。 这样编译器不会关注下面的参数列表。否则将不能通过编译。
       4. 在创建扩展方法时,需要保证该方法对使用点是可访问的。
       5. 如果定义了一个和原类成员相同的扩展方法,则编译器优先于原类型方法。所以,编写扩展方法时要注意不能和原类方法重名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值