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

Jad*_*ias 11 .net c# arrays ienumerable extension-methods

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

我计划向数组添加一个方法,即使它是多维的,也可以将它转换为IEnumerable.

如何在C#中扩展数组无关

mac*_*kow 33

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这个Array数组意味着*this Array*指的是要扩展的类型.*这个数组*也可以是*这个T*,其中方法是*public static void Extend <T>(this T obj)*.标识符仅为类型指定名称,因此可以在扩展方法中引用它. (3认同)

Jul*_*anR 28

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

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

// or:

public static void Extension<T>(this T[] array)
{
  // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

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