Ejemplo n.º 1
0
        /// <summary>
        /// 取得代表<see cref="System.Array"/>所有元素的索引
        /// </summary>
        /// <param name="obj">陣列實例</param>
        /// <returns>32 位元的整數陣列的物件清單,代表所有元素的索引</returns>
        public static int[][] GetAllIndexes(this Array obj)
        {
            List <int> Indexes = obj.GetLengths().ToList();

            List <List <int> > C(List <int> input)
            {
                List <List <int> > result = new List <List <int> >();

                //if (input.Count == 0) return result;
                if (input.Count == 1)
                {
                    return(Enumerable.Range(0, input.First()).Select(x => new List <int>(new int[] { x })).ToList());
                }

                for (int i = 0; i < input.First(); i++)
                {
                    var r = C(input.Skip(1).ToList()).Select(x => {
                        x.Insert(0, i);
                        return(x);
                    });
                    result.AddRange(r);
                }
                return(result);
            };

            return(C(Indexes).Select(x => x.ToArray()).ToArray());
        }
Ejemplo n.º 2
0
 public static Array CreateArray(Type elementType, Array sourceArray)
 {
     return Array.CreateInstance(elementType, sourceArray.GetLengths());
 }