C#中关于扩展方法的实例分析

互联网 17-6-18
这篇文章主要介绍了C#扩展方法,结合实例形式分析了C#扩展方法的功能、使用方法及相关注意事项,需要的朋友可以参考下

本文实例讲述了C#扩展方法。分享给大家供大家参考,具体如下:

扩展方法

扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。

如果我们有这么一个需求,将一个字符串的第一个字符转化为大写,第二个字符到第n个字符转化为小写,其他的不变,那么我们该如何实现呢?

不使用扩展方法:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  using System.Threading.Tasks;  namespace ExtraMethod  {    //抽象出静态StringHelper类    public static class StringHelper    {      //抽象出来的将字符串第一个字符大写,从第一个到第len个小写,其他的不变的方法      public static string ToPascal(string s,int len)      {        return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1);      }    }    class Program    {      static void Main(string[] args)      {        string s1 = "aSDdAdfGDFSf";        string s2 = "sbfSDffsjG";        Console.WriteLine(StringHelper.ToPascal(s1,3));        Console.WriteLine(StringHelper.ToPascal(s2, 5));      }    }  }

使用扩展方法:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  using System.Threading.Tasks;  namespace ExtraMethod  {    class Program    {      static void Main(string[] args)      {        string s1 = "aSDdAdfGDFSf";        string s2 = "sbfSDffsjG";        Console.WriteLine(s1.ToPascal(3));        Console.WriteLine(s2.ToPascal(5));      }    }    //扩展类,只要是静态就可以    public static class ExtraClass    {      //扩展方法--特殊的静态方法--为string类型添加特殊的方法ToPascal      public static string ToPascal(this string s, int len)      {        return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1);      }    }  }

通过上面两种方法的比较:

定义扩展方法

1.定义一个静态类以包含扩展方法。 2.该类必须对客户端代码可见。 3.将该扩展方法实现为静态方法,并使其至少具有与包含类相同的可见性。 4.方法的第一个参数指定方法所操作的类型;该参数必须以 this 修饰符开头。

请注意,第一个参数不是由调用代码指定的,因为它表示正应用运算符的类型,并且编译器已经知道对象的类型。 您只需通过 n 为这两个形参提供实参。

注意事项:

1.扩展方法必须在静态类中定义 2.扩展方法的优先级低于同名的类方法 3.扩展方法只在特定的命名空间内有效 4.除非必要不要滥用扩展方法

以上就是C#中关于扩展方法的实例分析的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 关于
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:C#中如何格式化json字符串的方法分析

相关资讯