C# 中提供一个非常实用的供能,扩展方法(Extension method),通过扩展方法,我们可以对已有类型做自己想做的相关扩展。
扩展方法是通过额外的静态方法扩展现有的类型。
扩展方法是在一个静态类中定义的,并且扩展方法也要是静态方法,并且扩展方法的第一个参数为要扩展的类型,必须附加一个this关键字。
来看一个简单的扩展方法:
namespace MethodExtend
{
static class ExtendMethodTest
{
public static void testExtendMethod(this int i)
{
Console.WriteLine("Extend Method Test");
}
public static void testExtendMethod(this int i, int index)
{
Console.WriteLine(-index);
}
public static void testExten2(this int i)
{
Console.WriteLine("extend method test");
}
}
}
上面这个类中的三个方法都是扩展方法,this int i表明要扩展的类型为int类型。this 修饰的是 int ,表明这个扩展方法是扩展的int 类型。
下面看一下扩展方法的引用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MethodExtend
{
class Program
{
static void Main(string[] args)
{
int age = 25;
age.testExtendMethod();
Console.WriteLine("///");
int t = 6;
t.testExtendMethod(t);
}
}
}
C#编译器会自动检测当前在作用域中的所有static类,找出为一个给定的类型定义的扩展方法。
如果你自己写的扩展方法的命名空间不在当前命名空间中, 只要自己添加相对应的命名空间就可以了。
如果扩展方法包含参数,就可以在要扩展的类型(即第一个参数)以后顺序的添加扩展方法对应的参数既可,在调用的时候填写相应参数,不过请记住,第一个参数为要扩展的类型,在填写实参的时候并没有这个参数。