代码之家  ›  专栏  ›  技术社区  ›  Jader Dias

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

  •  9
  • Jader Dias  · 技术社区  · 15 年前

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

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

    不相关 How to extend arrays in C#

    3 回复  |  直到 15 年前
        1
  •  28
  •   maciejkow    15 年前
    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());
        }
    }
    
        2
  •  25
  •   JulianR    15 年前

    对。或者通过扩展 Array 类,如图所示,或者通过扩展特定类型的数组甚至通用数组:

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

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

        3
  •  2
  •   Jader Dias    15 年前

    我做到了!

    public static class ArrayExtensions
    {
        public static IEnumerable<T> ToEnumerable<T>(this Array target)
        {
            foreach (var item in target)
                yield return (T)item;
        }
    }