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类,找出为一个给定的类型定义的扩展方法。
如果你自己写的扩展方法的命名空间不在当前命名空间中, 只要自己添加相对应的命名空间就可以了。
如果扩展方法包含参数,就可以在要扩展的类型(即第一个参数)以后顺序的添加扩展方法对应的参数既可,在调用的时候填写相应参数,不过请记住,第一个参数为要扩展的类型,在填写实参的时候并没有这个参数。
下一个:shiro的过滤器和权限控制