是否可以在C#中扩展数组?

时间:2009-07-25 21:14:59

标签: c# .net arrays extension-methods ienumerable

我习惯于向IEnumerable等外部类添加方法。但是我们可以在C#中扩展数组吗?

我打算为数组添加一个方法,即使它是多维的,也可以将它转换为IEnumerable。

How to extend arrays in C#

无关

3 个答案:

答案 0 :(得分:31)

static class Extension
{
    public static string Extend(this Array array)
    {
        return "Yes, you can";
    }
}

class Program
{

    static void Main(string[] args)
    {
        int[,,,] multiDimArray = new int[10,10,10,10];
        Console.WriteLine(multiDimArray.Extend());
    }
}

答案 1 :(得分:25)

是。通过扩展已经显示的Array类,或者通过扩展特定类型的数组甚至扩展通用数组:

public static void Extension(this string[] array)
{
  // Do stuff
}

// or:

public static void Extension<T>(this T[] array)
{
  // Do stuff
}

最后一个并不完全等同于扩展Array,因为它不适用于多维数组,所以它有点受限制,这可能是有用的,我想。

答案 2 :(得分:2)

我做到了!

public static class ArrayExtensions
{
    public static IEnumerable<T> ToEnumerable<T>(this Array target)
    {
        foreach (var item in target)
            yield return (T)item;
    }
}