是否有可能在C#扩展阵列?(Is it possible to extend arrays in C

2019-06-26 19:09发布

我已经习惯了方法添加到外部类,比如IEnumerable的。 但是,我们可以扩展在C#中的数组?

我打算添加到阵列的方法是将其转换为IEnumerable的,即使它是多维的。

没有涉及到如何在C#扩展阵列

Answer 1:

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());
    }
}


Answer 2:

是。 无论是通过延长Array如已经示出的类,或通过扩展特定种类的阵列或者甚至一个通用的阵列:

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

// or:

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

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



Answer 3:

我做的!

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


文章来源: Is it possible to extend arrays in C#?