📜  非静态类中的 c# 扩展方法 - C# (1)

📅  最后修改于: 2023-12-03 15:12:51.334000             🧑  作者: Mango

非静态类中的 C# 扩展方法

C# 扩展方法(Extension Methods)可以在不更改现有类的情况下为其添加新方法。这些新方法对于类外部的使用者来说就像是原生方法一样。C# 支持为非静态类添加扩展方法,这对于增加类的功能非常有用。

基本语法

C# 扩展方法的基本语法如下:

public static [返回类型] [方法名] (this [类型名] [参数名], [其他参数])
{
    // 实现代码
}

其中:

  • public 代表该方法为公开方法,可以从类外部访问。
  • static 代表该方法为静态方法。
  • [返回类型] 代表该方法的返回值类型。
  • [方法名] 代表该方法的名称。
  • this 关键字后面的 [类型名] 代表扩展方法所作用的类型。注意:这里不能是静态类型。
  • [参数名] 代表扩展方法的第一个参数。注意:这里必须指定为此类型的实例,且此参数前必须添加 this 关键字。
  • [其他参数] 代表扩展方法的其他参数。
示例

以下示例将演示如何在非静态类中添加扩展方法。

首先,我们创建一个名为 Person 的类。

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public void SayHello()
    {
        Console.WriteLine($"My name is {Name}, and I am {Age} years old.");
    }
}

现在,我们希望为 Person 类添加一个 ChangeName 的扩展方法,用于修改 Name 属性的值。以下是实现代码。

public static class PersonExtensions
{
    public static void ChangeName(this Person person, string newName)
    {
        person.Name = newName;
    }
}

我们可以在代码中使用该扩展方法,如下所示:

Person person = new Person { Name = "Tom", Age = 25 };
person.ChangeName("Jerry");
Console.WriteLine(person.Name);  // 输出 "Jerry"

我们还可以为 int 类型添加扩展方法。以下示例为 int 类型添加了一个 IsEven 方法,用于检查整数是否为偶数。

public static class IntExtensions
{
    public static bool IsEven(this int number)
    {
        return number % 2 == 0;
    }
}

我们可以在代码中使用该扩展方法,如下所示:

int number1 = 8;
bool isEven1 = number1.IsEven();  // isEven1 = true

int number2 = 7;
bool isEven2 = number2.IsEven();  // isEven2 = false
总结

本文介绍了如何为非静态类添加 C# 扩展方法。通过扩展方法,我们可以方便地为现有类增加新的功能,而无需修改原有的类代码。