本文实例讲述了c#扩展方法。分享给大家供大家参考,具体如下:
扩展方法使您能够向现有类型”添加“方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。对于用c#和Visual Basic编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。
如果我们有这么一个需求,将一个字符串的第一个字符转化为大写,第二个字符到第n个字符转化为小写,其他的不变,那么我们该如何实现呢?
使用系统; 使用System.Collections.Generic; 使用来; 使用text; 使用System.Threading.Tasks; 名称空间ExtraMethod {//抽象出静态StringHelper类 公共静态类StringHelper {//抽象出来的将字符串第一个字符大写,从第一个到第len个小写,其他的不变的方法 公共静态字符串ToPascal (string s, int len) { 返回。Substring (0, 1) .ToUpper () + s。Substring (len) .ToLower () + s。Substring (len + 1); } } 类项目 { 静态void Main (string [] args) { 字符串s1=癮SDdAdfGDFSf”; 字符串s2=皊bfSDffsjG”; Console.WriteLine (StringHelper.ToPascal (s1, 3)); Console.WriteLine (StringHelper。ToPascal (s2, 5)); } } } >之前
使用扩展方法:
使用系统; 使用System.Collections.Generic; 使用来; 使用text; 使用System.Threading.Tasks; 名称空间ExtraMethod { 类项目 { 静态void Main (string [] args) { 字符串s1=癮SDdAdfGDFSf”; 字符串s2=皊bfSDffsjG”; Console.WriteLine (s1.ToPascal (3)); Console.WriteLine (s2.ToPascal (5)); } }//扩展类,只要是静态就可以 公共静态类ExtraClass {//扩展方法——特殊的静态方法——为字符串类型添加特殊的方法ToPascal 公共静态字符串ToPascal(这个字符串,int len) { 返回。Substring (0, 1) .ToUpper () + s。Substring (len) .ToLower () + s。Substring (len + 1); } } } >之前
,,,1.代码在访问ToPascal这样的静态方法时更为便捷。用起来就像是被扩展类型确实具有该实例方法一样。
,,2 .扩展方法不改变被扩展类的代码,不用重新编译,修改,派生被扩展类
,,,1.定义一个静态类以包含扩展方法。
,,2.该类必须对客户端代码可见。
,,3.将该扩展方法实现为静态方法,并使其至少具有与包含类相同的可见性。
,,4.方法的第一个参数指定方法所操作的类型;该参数必须以这修饰符开头。请注意,第一个参数不是由调用代码指定的,因为它表示正应用运算符的类型,并且编译器已经知道对象的类型。您只需通过n为这两个形参提供实参。
,,,1.扩展方法必须在静态类中定义
,,2.扩展方法的优先级低于同名的类方法
,,3.扩展方法只在特定的命名空间内有效
,,4 .除非必要不要滥用扩展方法更多关于c#相关内容感兴趣的读者可查看本站专题:《c#窗体操作技巧汇总》、《c#数据结构与算法教程》、《c#常见控件用法教程》、《c#面向对象程序设计入门教程》及《c#程序设计之线程使用技巧总结》
希望本文所述对大家c#程序设计有所帮助。
c#扩展方法实例分析