C# 3.0 / C# 3.5 扩展方法

概述

  扩展方法是一种特殊的静态方法,可以像扩展类型上的实例方法一样进行调用,能向现有类型“添加”方法,而无须创建新的派生类型、重新编译或以其他方式修改原始类型。

扩展方法的定义实现:

      public static class StringUtil
      {
          public static void WriteSelf(this string strSelf, int year)
          {
              Console.WriteLine(string.Format("我是{0}人,今年是{1}年。", strSelf, year));
          }
      }

扩展方法的调用:

            string str = "冷水江";
            str.WriteSelf(2016);      //在编译时会将 str.WriteSelf(2016) 替换成:StringUtil.WriteSelf(str, 2018);

    编译器认为一个表达式要使用一个实例方法,但是没有找到,需要检查导入的命名空间和当前命名空间里所有的扩展方法,并匹配到适合的方法。

注意:

  (1)实例方法优先于扩展方法(允许存在同名实例方法和扩展方法)

  (2)可以在空引用上调用扩展方法。

  (3)可以被继承。

  (4)并不是任何方法都能作为扩展方法使用,必须有以下特征:

      它必须放在一个非嵌套、非泛型的静态类中。

      它至少有一个参数。

      第一个参数必须附加 this 关键字。

      第一个参数不能有任何其他修饰符(out/ref)

      第一个参数不能是指针类型,其类型决定是在何种类型上进行扩展。

转载于:https://www.cnblogs.com/zhangchaoran/p/8681248.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值