我习惯于向IEnumerable等外部类添加方法。但是我们可以在C#中扩展数组吗?
我打算为数组添加一个方法,即使它是多维的,也可以将它转换为IEnumerable。
无关答案 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;
}
}