C# - 扩展方法
扩展方法,顾名思义,是附加的方法。扩展方法允许您在不修改、派生或重新编译原始类、结构或接口的情况下,注入额外的方法。扩展方法可以添加到您自己的自定义类、.NET 框架类或第三方类或接口中。
在以下示例中,IsGreaterThan()
是 int 类型的扩展方法,如果 int 变量的值大于提供的整数参数,则返回 true。
示例:扩展方法
int i = 10;
bool result = i.IsGreaterThan(100); //returns false
IsGreaterThan()
方法不是 int 数据类型 (Int32 结构) 的方法。它是程序员为 int 数据类型编写的扩展方法。通过包含定义它的命名空间,IsGreaterThan()
扩展方法将在整个应用程序中可用。
扩展方法在 Visual Studio 的智能感知中有一个特殊符号,因此您可以轻松区分类方法和扩展方法。

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

扩展方法实际上是定义在静态类中的一种特殊静态方法。要定义扩展方法,首先,定义一个静态类。
例如,在下面的示例中,我们在 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 关键字。