C#中的扩展方法是一种特殊的静态方法,可以在不修改原始类的情况下向该类添加新的方法。扩展方法必须定义在一个静态类中,并且必须使用this关键字作为第一个参数,指定要扩展的类型。

以下是一些使用C#扩展方法的常见用法:

  1. 扩展现有类的功能:可以向已有的类添加新的方法,以提供更多的功能。例如,可以向字符串类添加一个扩展方法来反转字符串:
public static class StringExtensions
{
    public static string Reverse(this string input)
    {
        char[] chars = input.ToCharArray();
        Array.Reverse(chars);
        return new string(chars);
    }
}

// 使用扩展方法
string str = "Hello World";
string reversedStr = str.Reverse(); // 输出:dlroW olleH
  1. 扩展接口的实现:可以向接口添加默认实现的扩展方法,以避免在实现该接口的类中重复编写相同的代码。例如,可以向IEnumerable接口添加一个扩展方法来计算序列的平均值:
public static class EnumerableExtensions
{
    public static double Average(this IEnumerable<double> source)
    {
        double sum = 0;
        int count = 0;
        
        foreach (var item in source)
        {
            sum += item;
            count++;
        }
        
        return sum / count;
    }
}

// 使用扩展方法
List<double> numbers = new List<double> { 2.5, 3.7, 4.2, 5.1 };
double average = numbers.Average(); // 输出:3.875
  1. 扩展枚举类型:可以向枚举类型添加新的方法,以提供更方便的操作。例如,可以向枚举类型添加一个扩展方法来获取枚举值的描述:
public static class EnumExtensions
{
    public static string GetDescription(this Enum value)
    {
        return value.GetType()
                    .GetMember(value.ToString())
                    .FirstOrDefault()
                    ?.GetCustomAttribute<DescriptionAttribute>()
                    ?.Description ?? value.ToString();
    }
}

// 使用扩展方法
enum Colors
{
    [Description("Red color")]
    Red,
    
    [Description("Green color")]
    Green,
    
    [Description("Blue color")]
    Blue
}

Colors color = Colors.Red;
string description = color.GetDescription(); // 输出:Red color

这些只是一些常见的扩展方法用法,实际上可以根据需要自定义扩展方法来扩展任何类、接口或枚举类型的功能

C# 扩展的用法

原文地址: https://www.cveoy.top/t/topic/iLFs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录