是否可以在C#中扩展数组?
我习惯于向IEnumerable等外部类添加方法。 但是我们可以在C#中扩展数组吗?
我打算为数组添加一个方法,即使它是多维的,也可以将它转换为IEnumerable。
与如何在C#中扩展数组无关
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()); } }
是。 要么通过扩展已经显示的Array
类,要么扩展特定类型的数组甚至是通用数组:
public static void Extension(this string[] array) { // Do stuff } // or: public static void Extension(this T[] array) { // Do stuff }
最后一个并不完全等同于扩展Array
,因为它不适用于多维数组,所以它有点受限制,这可能是有用的,我想。
我做的!
public static class ArrayExtensions { public static IEnumerable ToEnumerable (this Array target) { foreach (var item in target) yield return (T)item; } }