猿教程 Logo

C# 扩展方法

扩展方法,顾名思义,是额外的方法。 扩展方法允许您注入额外的方法,而不修改,导出或重新编译原始类,结构或接口。 扩展方法可以添加到您自己的自定义类,.NET框架类或第三方类或接口。

在下面的示例中,IsGreaterThan()是int类型的扩展方法,如果int变量的值大于提供的整数参数,则返回true。

相关实例:

int i = 10;

bool result = i.IsGreaterThan(100); //returns false

IsGreaterThan()方法不是int数据类型(Int32 struct)的方法。 它是由程序员为int数据类型写的扩展方法。 IsGreaterThan()扩展方法将在整个应用程序中可用,包括其已定义的命名空间。

扩展方法在VS的intellisense中有一个特殊的符号,所以你可以很容易地区分类方法和扩展方法。


现在让我们来看看如何编写一个扩展方法。

扩展方法实际上是在静态类中定义的一种特殊类型的静态方法。 要定义扩展方法,首先定义一个静态类。

例如,在下面的示例中,我们在ExtensionMethods命名空间下创建了一个IntExtensions类。 IntExtensions类将包含适用于int数据类型的所有扩展方法。 (您可以为命名空间和类使用任何名称。)

相关实例:

namespace ExtensionMethods
{
    public static class IntExtensions
    {

    }
}

现在,定义一个静态方法作为扩展方法,其中扩展方法的第一个参数指定扩展方法适用的类型。 我们将在int类型上使用这个扩展方法。 所以第一个参数必须在int前面加上this修饰符。

例如,IsGreaterThan()方法对int操作,因此第一个参数是,this int i:

相关实例:

namespace ExtensionMethods
{
    public static class IntExtensions
     {
        public static bool IsGreaterThan(this int i, int value)
        {
            return i > value;
        }
    }
}

现在,您可以在任何要使用此扩展方法的地方引用ExtensionMethods命名空间。

相关实例:

using ExtensionMethods;

class Program
{

    static void Main(string[] args)
    {
        int i = 10;

        bool result = i.IsGreaterThan(100); 

        Console.WriteLine(result);
    }
}

运行结果:

false
注意

常规静态方法和扩展方法之间的唯一区别是扩展方法的第一个参数指定它将要操作的类型,前面的this是关键字。

要点
  1. 扩展方法是最初不包括在类中的其他自定义方法。 

  2. 扩展方法可以添加到自定义,.NET Framework或第三方类,结构或接口。 

  3. 扩展方法的第一个参数必须是扩展方法为可应用的类型,前面带有this关键字。 

  4. 扩展方法可以通过引用扩展方法的命名空间后在应用程序中的任何地方使用。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CSharp/csharp-extension-method.html