先创建一个扩展方法必须在静态(static修饰)类中实现,也必须要在静态(static修饰)方法中实现。
标准模板:
using System;
namespace ExtensionMethodDemo//命名空间,可选
{
//这里的public 是可选的你如果是private的话这个类只能在这个文件里面访问
public static class StringExtensions
{
//这里的public 是可选的你如果是private的话这个方法只能在这个类里面访问
//<returnType> 是扩展方法的返回类型
//<ExtensionMethodName> 是扩展方法的名称
//<ExtendedClassType> 是要扩展的类的类型!这个很关键,并且一定要放第一个位置
//obj 是该类的实例,可以在扩展方法中使用
//<params> 是方法的参数列表,可以多个也可以零个,可以在方法体调用
public static <returnType> <ExtensionMethodName>
(this <ExtendedClassType> obj, <params>)
{
// 代码体
}
//你可以写多个扩展方法,普通方法也可以不写
}
调用模板:
//定义一个返回string类型的关于int类型的扩展方法;
public static class MathExtensions
{
public static string Square(this int number)
{
int a=number * number;
return a.ToString();
}
}
class Program
{
static void Main(string[] args)
{
int number = 2;
string a = number.Square(this);
Console.Write(a);
}
}
附言
讲解完毕,下面附一个多参数的例子
public static class StringExtensions
{
public static string Replace(this string input, string oldValue, string newValue, StringComparison comparisonType)
{
// Method implementation
}
}
有什么疑惑的可以在评论区问,有时间我会解答,鄙人也不是很会,有错误的、可以优化、没讲好的地方请大佬指正!