如何调整多维(int
、char
、string
、double
等)数组的所有尺寸?
我做了这个工作,但它只适用于Array
类:
private Array ResizeArray(object Arr, int[] boyutlari)
{
Array myArray = ((Array)Arr);
Type type = Arr.GetType().GetElementType();
Array _arr = Array.CreateInstance(type, boyutlari);
int[] arrMin = new int[boyutlari.GetLength(0)];
int sayboyut = 0;
foreach (int i in boyutlari)
{
arrMin[sayboyut] = Math.Min(i, myArray.GetLength(sayboyut));
sayboyut++;
}
int tumOlasiliklarAdet = 1;
foreach (int intMin in arrMin)
{
tumOlasiliklarAdet *= intMin;
}
long[] arrDegerler = new long[myArray.Rank];
for (int iy = 0; iy < tumOlasiliklarAdet; iy++)
{
for (int ix = 0; ix < myArray.Rank; ix++)
{
int toplamSagOlasilik = 1;
for (int isagsay = ix + 1; isagsay < myArray.Rank; isagsay++)
toplamSagOlasilik *= arrMin[isagsay];
arrDegerler[ix] = (iy / toplamSagOlasilik) % arrMin[ix];
}
var ss = ((Array)Arr).GetValue(arrDegerler);
_arr.SetValue(ss, arrDegerler);
}
return _arr;
}
用法:
public Array arrKlasorlerDosyalar = Array.CreateInstance(typeof(string), 1, 2);
int[] boyutlar = new int[]
{ 10 /*1th dimension length*/, 2 /*2th dimension length*/};
arrKlasorlerDosyalar = ResizeArray((object)arrKlasorlerDosyalar, boyutlar);