2

如何调整多维(intcharstringdouble等)数组的所有尺寸?

我做了这个工作,但它只适用于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);
4

0 回答 0