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,len).ToLower() + s.Substring(len + 1); } } } 通过上面两种方法的比较: 1.代码在访问ToPascal这样的静态方法时更为便捷。用起来就像是被扩展类型确实具有该实例方法一样。 定义扩展方法 1.定义一个静态类以包含扩展方法。 请注意,第一个参数不是由调用代码指定的,因为它表示正应用运算符的类型,并且编译器已经知道对象的类型。 您只需通过 n 为这两个形参提供实参。 注意事项: 1.扩展方法必须在静态类中定义 更多关于C#相关内容感兴趣的读者可查看本站专题:《C#窗体操作技巧汇总》、《C#数据结构与算法教程》、《C#常见控件用法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》 希望本文所述对大家C#程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |