C# 编程指南:扩展方法(Extension Methods)

在C#中,扩展方法(Extension Methods)允许您向现有类型添加新的方法,而无需修改原始类型的定义或创建子类。扩展方法是一种静态方法,它的第一个参数用于指定要扩展的类型,并使用 this 关键字进行修饰。通过扩展方法,您可以在不修改原始类型的情况下,为其添加额外的功能。

部分
1
扩展方法的规则和限制
扩展方法必须是静态方法,并且必须定义在静态类中。
扩展方法的第一个参数必须使用 this 关键字进行修饰,指定要扩展的类型。
扩展方法所在的静态类必须在使用扩展方法的代码的命名空间中。
扩展方法不能修改原始类型,它们只能通过实例参数进行操作。
部分
2
示例代码
扩展方法示例1:为字符串类型添加一个反转方法。
using System;

public static class StringExtensions
{
    public static string Reverse(this string input)
    {
        char[] charArray = input.ToCharArray();
        Array.Reverse(charArray);
        return new string(charArray);
    }
}

public class Program
{
    static void Main(string[] args)
    {
        string str = "Hello, World!";
        string reversedStr = str.Reverse();

        Console.WriteLine(reversedStr); // 输出:!dlroW ,olleH
    }
}

在上述示例中,我们定义了一个名为 StringExtensions 的静态类,并在其中添加了一个扩展方法 Reverse,用于反转字符串。在 Main 方法中,我们创建了一个字符串对象 str,然后使用扩展方法 Reverse 来反转字符串,并将结果打印出来。

扩展方法示例2:为 IEnumerable<T> 接口添加一个用于打印集合元素的方法。
using System;
using System.Collections.Generic;

public static class EnumerableExtensions
{
    public static void PrintElements<T>(this IEnumerable<T> collection)
    {
        foreach (var item in collection)
        {
            Console.WriteLine(item);
        }
    }
}

public class Program
{
    static void Main(string[] args)
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        numbers.PrintElements();

        // 输出:
        // 1
        // 2
        // 3
        // 4
        // 5
    }
}

在上述示例中,我们定义了一个名为 EnumerableExtensions 的静态类,并添加了一个扩展方法 PrintElements,用于打印实现了 IEnumerable<T> 接口的集合的元素。在 Main 方法中,我们创建了一个整数列表 numbers,然后使用扩展方法 PrintElements 打印列表中的元素。 通过扩展方法,您可以为各种类型添加新的功能,包括系统类型和自定义类型。只要满足扩展方法的规则和限制,您可以根据需要定义和使用扩展方法。

    目录

  • 1.
    扩展方法的规则和限制
  • 2.
    示例代码