C# 扩展方法简介

来源:互联网 发布:广州新百佳网络批发 编辑:程序博客网 时间:2024/05/16 00:53

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类,找出为一个给定的类型定义的扩展方法。

如果你自己写的扩展方法的命名空间不在当前命名空间中, 只要自己添加相对应的命名空间就可以了。

 

如果扩展方法包含参数,就可以在要扩展的类型(即第一个参数)以后顺序的添加扩展方法对应的参数既可,在调用的时候填写相应参数,不过请记住,第一个参数为要扩展的类型,在填写实参的时候并没有这个参数。