Is it possible to extend arrays in 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()); }}
Yes. Either through extending the Array
class as already shown, or by extending a specific kind of array or even a generic array:
public static void Extension(this string[] array){ // Do stuff}// or:public static void Extension<T>(this T[] array){ // Do stuff}
The last one is not exactly equivalent to extending Array
, as it wouldn't work for a multi-dimensional array, so it's a little more constrained, which could be useful, I suppose.
I did it!
public static class ArrayExtensions{ public static IEnumerable<T> ToEnumerable<T>(this Array target) { foreach (var item in target) yield return (T)item; }}