扩展方法学习总结

什么是扩展方法?怎么写扩展方法?下面将一一解答。

首先,用扩展方法的目标是对现有的类提供额外的方法以增强该类的功能。

比方说我们想把字符串的转换成第一个字母大写,其他的字母小写。现在VS并没有提供这样直接转换的功能,如果要用的话就需要截取和拼接字符串才能做到。但是如果用到的多了的话,这样做是很麻烦的。此时,我们就可以给字符串添加一个扩展方法,就像ToUpper,ToLower一样,直接点出来转换就可以完成转换。

其次,扩展方法的注意事项

1.扩展方法是一种特殊的静态方法

2.扩展方法必须在静态类中定义

3.扩展方法的优先级低于同名的类方法

4.扩展方法只在特定的命名空间内有效

下面,上代码

<span style="font-size:18px;"><span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string strTest ="abc";
           ;
            Console.Write(strTest.ToPascal());  //这里直接调用了我们的扩展方法
            Console.Read();
        }
      
    }
    /// <summary>
    ///拓展类,只要是静态的就可以
    /// </summary>
    public static class ExtraStr
    {
        
        //在这里,参数里面的this就相当于指针,告诉程序,我要给哪一个类添加扩展方法
        public static string ToPascal(this string s)//给字符串类提供拓展方法
        {
            return s.Substring(0,1).ToUpper() + s.Substring(1).ToLower();
        }
    }
}
</span></span>

扩展方法还有一个特点就是只在特定的命名空间内有效,(也就是注意事项的第4条)意思是说这个扩展方法写在哪个命名空间里面了,就只能在这个命名空间内使用,换命名空间了就不能调用到它了,需要先引用扩展方法所在的命名空间。这样也挺麻烦的。那怎么办呢?当然还有很简单很直接的方法,就是将扩展方法所在类的命名空间直接改成和扩展的类的命名空间一样就可以了。比如说,string类的命名空间是System,那么我们把我们写的那个扩展方法的类的命名空间也改成System。

这样,只要用到了string,那么就一定用到了System这个命名空间,那么相当于我们的扩展方法也引用进来了。

像string这样的类都是密封类,是不能被继承的。那么如果我们想要对它进行扩展的话就需要可以用扩展方法,大大的方便了我们。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值