Is it possible to extend arrays in C#?

前端 未结 3 825
情歌与酒
情歌与酒 2020-12-10 03:09

I\'m used to add methods to external classes like IEnumerable. But can we extend Arrays in C#?

I am planning to add a method to arrays that converts it to a IEnumera

相关标签:
3条回答
  • 2020-12-10 03:27
    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());
        }
    }
    
    0 讨论(0)
  • 2020-12-10 03:39

    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;
        }
    }
    
    0 讨论(0)
  • 2020-12-10 03:45

    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.

    0 讨论(0)
提交回复
热议问题