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

是否可以在C#中扩展数组?,c#,.net,arrays,extension-methods,ienumerable,C#,.net,Arrays,Extension Methods,Ienumerable,我习惯于向像IEnumerable这样的外部类添加方法。但是我们可以在C#中扩展数组吗 我计划在数组中添加一个方法,将其转换为IEnumerable,即使它是多维的 与无关,是我干的 public static class ArrayExtensions { public static IEnumerable<T> ToEnumerable<T>(this Array target) { foreach (var item in targe

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

我计划在数组中添加一个方法,将其转换为IEnumerable,即使它是多维的

无关,是我干的

public static class ArrayExtensions
{
    public static IEnumerable<T> ToEnumerable<T>(this Array target)
    {
        foreach (var item in target)
            yield return (T)item;
    }
}
公共静态类ArrayExtensions
{
公共静态IEnumerable-ToEnumerable(此数组目标)
{
foreach(目标中的var项目)
收益回报(T)项;
}
}

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

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

// or:

public static void Extension<T>(this T[] array)
{
  // Do stuff
}
公共静态无效扩展(此字符串[]数组)
{
//做事
}
//或:
公共静态无效扩展(此T[]数组)
{
//做事
}

最后一个不完全等同于扩展
数组
,因为它对多维数组不起作用,所以它有一点约束性,我想这可能是有用的。

在这里尝试比在这里发问短吗?我尝试过,但我在当时的过程中犯了一些错误。现在我得到了我期望的行为+1,您的实现比@maciejkow的实现更安全。不久前,我使用类似的方法编写了一些数组扩展方法。该方法中的“thisarrayarray”是什么意思。我认为数组是一个抽象类,那么你在这里写“thisarray”到底是做什么的呢?这个数组意味着这个数组引用的是要扩展的类型。这个数组也可以是这个T,其中方法是publicstaticvoidextend(这个T obj)。标识符只给类型一个名称,因此可以在扩展方法中引用它。“此数组目标”在方法中是什么意思。我认为数组是一个抽象类,那么你在这里写“thisarraytarget”到底是做什么的呢?
public static void Extension(this string[] array)
{
  // Do stuff
}

// or:

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