/// <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()); }
public static Array CreateArray(Type elementType, Array sourceArray) { return Array.CreateInstance(elementType, sourceArray.GetLengths()); }