📅  最后修改于: 2023-12-03 15:12:51.334000             🧑  作者: Mango
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# 扩展方法。通过扩展方法,我们可以方便地为现有类增加新的功能,而无需修改原有的类代码。