# C# this扩展方法

    更多 来源:C#学习浏览量:6602 this本文导读 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。
    C#扩展方法第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。

    C# this扩展方法实例

    实例1、给string 类型增加一个Add方法,该方法的作用是给字符串增加一个字母a

    复制C# this扩展方法 - 开心学习 - 图1 C# this扩展方法 - 开心学习 - 图2 //必须是静态类才可以添加扩展方法 C# this扩展方法 - 开心学习 - 图3 Static class Program C# this扩展方法 - 开心学习 - 图4 { C# this扩展方法 - 开心学习 - 图5 staticvoid Main(string[] args) C# this扩展方法 - 开心学习 - 图6 { C# this扩展方法 - 开心学习 - 图7 string str =”quzijing”; C# this扩展方法 - 开心学习 - 图8 //注意调用扩展方法,必须用对象来调用 C# this扩展方法 - 开心学习 - 图9string Newstr = str.Add(); C# this扩展方法 - 开心学习 - 图10 Console.WriteLine(Newstr); C# this扩展方法 - 开心学习 - 图11 Console.ReadKey(); C# this扩展方法 - 开心学习 - 图12 } C# this扩展方法 - 开心学习 - 图13 //声明扩展方法 C# this扩展方法 - 开心学习 - 图14 //扩展方法必须是静态的,Add有三个参数 C# this扩展方法 - 开心学习 - 图15 //this 必须有,string表示我要扩展的类型,stringName表示对象名 C# this扩展方法 - 开心学习 - 图16 //三个参数this和扩展的类型必不可少,对象名可以自己随意取如果需要传递参数,//再增加一个变量即可 C# this扩展方法 - 开心学习 - 图17 C# this扩展方法 - 开心学习 - 图18 publicstaticstring Add(thisstring stringName) C# this扩展方法 - 开心学习 - 图19 { C# this扩展方法 - 开心学习 - 图20 return stringName+”a”; C# this扩展方法 - 开心学习 - 图21 } C# this扩展方法 - 开心学习 - 图22} C# this扩展方法 - 开心学习 - 图23
    实例2、给自定义的类型增加一个扩展方法,并增加一个传递的参数
    (1)、声明一个Student类,它包含了两个方法StuInfo,getStuInfo 复制C# this扩展方法 - 开心学习 - 图24 C# this扩展方法 - 开心学习 - 图25 publicclass Student C# this扩展方法 - 开心学习 - 图26 { C# this扩展方法 - 开心学习 - 图27 publicstring StuInfo() C# this扩展方法 - 开心学习 - 图28 { C# this扩展方法 - 开心学习 - 图29 return”学生基本信息”; C# this扩展方法 - 开心学习 - 图30 } C# this扩展方法 - 开心学习 - 图31 publicstring getStuInfo(string stuName, string stuNum) C# this扩展方法 - 开心学习 - 图32 { C# this扩展方法 - 开心学习 - 图33 returnstring.Format(“学生信息:\n”+”姓名:{0} \n”+”学号:{1}”, stuName, stuNum); C# this扩展方法 - 开心学习 - 图34 } C# this扩展方法 - 开心学习 - 图35 } C# this扩展方法 - 开心学习 - 图36
    (2)、声明一个名为ExtensionStudentInfo的静态类,注意必须为静态
    这个类的作用就是包含一些我们想要扩展的方法,在此我们声明两个Student类型的扩展方法,Student类型为我们自定义的类型。 复制C# this扩展方法 - 开心学习 - 图37 C# this扩展方法 - 开心学习 - 图38 publicstaticclass ExtensionStudentInfo C# this扩展方法 - 开心学习 - 图39 { C# this扩展方法 - 开心学习 - 图40 //声明扩展方法 C# this扩展方法 - 开心学习 - 图41 //要扩展的方法必须是静态的方法,Add有三个参数 C# this扩展方法 - 开心学习 - 图42 //this 必须有,string表示我要扩展的类型,stringName表示对象名 C# this扩展方法 - 开心学习 - 图43 //三个参数this和扩展的类型必不可少,对象名可以自己随意取如果需要传递参数,再增加一个变量即可 C# this扩展方法 - 开心学习 - 图44publicstaticstring ExtensionStuInfo(this Student stuName) C# this扩展方法 - 开心学习 - 图45 { C# this扩展方法 - 开心学习 - 图46 return stuName.StuInfo(); C# this扩展方法 - 开心学习 - 图47 } C# this扩展方法 - 开心学习 - 图48 //声明扩展方法 C# this扩展方法 - 开心学习 - 图49 //要扩展的方法必须是静态的方法,Add有三个参数 C# this扩展方法 - 开心学习 - 图50 //this 必须有,string表示我要扩展的类型,stringName表示对象名 C# this扩展方法 - 开心学习 - 图51 //三个参数this和扩展的类型必不可少,对象名可以自己随意取如果需要传递参数,在此我们增加了两个string类型的参数 C# this扩展方法 - 开心学习 - 图52publicstaticstring ExtensionGetStuInfo(this Student student, string stuname, string stunum) C# this扩展方法 - 开心学习 - 图53 { C# this扩展方法 - 开心学习 - 图54 return student.getStuInfo(stuname, stunum)+”\n读取完毕”; C# this扩展方法 - 开心学习 - 图55 } C# this扩展方法 - 开心学习 - 图56 } C# this扩展方法 - 开心学习 - 图57
    (3)、使用自定义类的扩展方法,注意必须要用对象来调用扩展方法 复制C# this扩展方法 - 开心学习 - 图58 C# this扩展方法 - 开心学习 - 图59 staticvoid Main(string[] args) C# this扩展方法 - 开心学习 - 图60 { C# this扩展方法 - 开心学习 - 图61 Student newstudent =new Student(); C# this扩展方法 - 开心学习 - 图62 //要使用对象调用我们的扩展方法 C# this扩展方法 - 开心学习 - 图63string stuinfo = newstudent.ExtensionStuInfo(); C# this扩展方法 - 开心学习 - 图64 Console.WriteLine(stuinfo); C# this扩展方法 - 开心学习 - 图65 //要使用对象调用我们的扩展方法 C# this扩展方法 - 开心学习 - 图66 string stuinformation = newstudent.ExtensionGetStuInfo(“quzijing”, “20081766”); C# this扩展方法 - 开心学习 - 图67 Console.WriteLine(stuinformation); C# this扩展方法 - 开心学习 - 图68 Console.ReadKey(); C# this扩展方法 - 开心学习 - 图69 } C# this扩展方法 - 开心学习 - 图70
    实例3、为string扩展一个验证邮件类
    (1)、扩展方法 复制C# this扩展方法 - 开心学习 - 图71 C# this扩展方法 - 开心学习 - 图72using System; C# this扩展方法 - 开心学习 - 图73 C# this扩展方法 - 开心学习 - 图74using System.Collections.Generic; C# this扩展方法 - 开心学习 - 图75 C# this扩展方法 - 开心学习 - 图76using System.Linq; C# this扩展方法 - 开心学习 - 图77 C# this扩展方法 - 开心学习 - 图78using System.Text; C# this扩展方法 - 开心学习 - 图79 C# this扩展方法 - 开心学习 - 图80using System.Text.RegularExpressions; C# this扩展方法 - 开心学习 - 图81 C# this扩展方法 - 开心学习 - 图82 C# this扩展方法 - 开心学习 - 图83 C# this扩展方法 - 开心学习 - 图84//声明扩展方法的步骤:类必须是static,方法是static, C# this扩展方法 - 开心学习 - 图85 C# this扩展方法 - 开心学习 - 图86//第一个参数是被扩展的对象,前面标注this。 C# this扩展方法 - 开心学习 - 图87 C# this扩展方法 - 开心学习 - 图88//使用扩展方法的时候必须保证扩展方法类已经在当前代码中using C# this扩展方法 - 开心学习 - 图89 C# this扩展方法 - 开心学习 - 图90namespace 扩展方法 C# this扩展方法 - 开心学习 - 图91 C# this扩展方法 - 开心学习 - 图92{ C# this扩展方法 - 开心学习 - 图93 C# this扩展方法 - 开心学习 - 图94 //扩展方法必须是静态的 C# this扩展方法 - 开心学习 - 图95 C# this扩展方法 - 开心学习 - 图96 publicstaticclass StringHelper C# this扩展方法 - 开心学习 - 图97 C# this扩展方法 - 开心学习 - 图98 { C# this扩展方法 - 开心学习 - 图99 C# this扩展方法 - 开心学习 - 图100 //扩展方法必须是静态的,第一个参数必须加上this C# this扩展方法 - 开心学习 - 图101 C# this扩展方法 - 开心学习 - 图102 publicstaticbool IsEmail(thisstring _input) C# this扩展方法 - 开心学习 - 图103 C# this扩展方法 - 开心学习 - 图104 { C# this扩展方法 - 开心学习 - 图105 C# this扩展方法 - 开心学习 - 图106 return Regex.IsMatch(_input, @”^\w+@\w+\.\w+$”); C# this扩展方法 - 开心学习 - 图107 C# this扩展方法 - 开心学习 - 图108 } C# this扩展方法 - 开心学习 - 图109 C# this扩展方法 - 开心学习 - 图110 //带多个参数的扩展方法 C# this扩展方法 - 开心学习 - 图111 C# this扩展方法 - 开心学习 - 图112 //在原始字符串前后加上指定的字符 C# this扩展方法 - 开心学习 - 图113 C# this扩展方法 - 开心学习 - 图114 publicstaticstring Quot(thisstring _input, string _quot) C# this扩展方法 - 开心学习 - 图115 C# this扩展方法 - 开心学习 - 图116 { C# this扩展方法 - 开心学习 - 图117 C# this扩展方法 - 开心学习 - 图118 return _quot + _input + _quot; C# this扩展方法 - 开心学习 - 图119 C# this扩展方法 - 开心学习 - 图120 } C# this扩展方法 - 开心学习 - 图121 C# this扩展方法 - 开心学习 - 图122 } C# this扩展方法 - 开心学习 - 图123 C# this扩展方法 - 开心学习 - 图124} C# this扩展方法 - 开心学习 - 图125
    (2)、使用方法 复制C# this扩展方法 - 开心学习 - 图126 C# this扩展方法 - 开心学习 - 图127using System; C# this扩展方法 - 开心学习 - 图128 C# this扩展方法 - 开心学习 - 图129using System.Collections.Generic; C# this扩展方法 - 开心学习 - 图130 C# this扩展方法 - 开心学习 - 图131using System.Linq; C# this扩展方法 - 开心学习 - 图132 C# this扩展方法 - 开心学习 - 图133using System.Text; C# this扩展方法 - 开心学习 - 图134 C# this扩展方法 - 开心学习 - 图135namespace 扩展方法 C# this扩展方法 - 开心学习 - 图136 C# this扩展方法 - 开心学习 - 图137{ C# this扩展方法 - 开心学习 - 图138 C# this扩展方法 - 开心学习 - 图139 class Program C# this扩展方法 - 开心学习 - 图140 C# this扩展方法 - 开心学习 - 图141 { C# this扩展方法 - 开心学习 - 图142 C# this扩展方法 - 开心学习 - 图143 staticvoid Main(string[] args) C# this扩展方法 - 开心学习 - 图144 C# this扩展方法 - 开心学习 - 图145 { C# this扩展方法 - 开心学习 - 图146 C# this扩展方法 - 开心学习 - 图147 string _myEmail =”abc@163.com”; C# this扩展方法 - 开心学习 - 图148 C# this扩展方法 - 开心学习 - 图149 //这里就可以直接使用string类的扩展方法IsEmail了 C# this扩展方法 - 开心学习 - 图150 C# this扩展方法 - 开心学习 - 图151 Console.WriteLine(_myEmail.IsEmail()); C# this扩展方法 - 开心学习 - 图152 C# this扩展方法 - 开心学习 - 图153 //调用接收参数的扩展方法 C# this扩展方法 - 开心学习 - 图154 C# this扩展方法 - 开心学习 - 图155 Console.WriteLine(_myEmail.Quot(“!”)); C# this扩展方法 - 开心学习 - 图156 C# this扩展方法 - 开心学习 - 图157 C# this扩展方法 - 开心学习 - 图158 C# this扩展方法 - 开心学习 - 图159 Console.ReadLine(); C# this扩展方法 - 开心学习 - 图160 C# this扩展方法 - 开心学习 - 图161 } C# this扩展方法 - 开心学习 - 图162 C# this扩展方法 - 开心学习 - 图163 } C# this扩展方法 - 开心学习 - 图164 C# this扩展方法 - 开心学习 - 图165} C# this扩展方法 - 开心学习 - 图166