0

I can't find a way of copying n-depth jagged array by value (not by reference).

Here's the code i wrote for copying jagged array of depth 3:

    public static T[][][] Clone_Arr<T>(T[][][] arr)
    {
        int length1 = arr.Length;
        T[][][] arr2 = new T[length1][][];

        for (int i = 0; i < length1; i++)
        {
            int length2 = arr[i].Length;
            arr2[i] = new T[length2][];

            for (int j = 0; j < length2; j++)
            {
                int length3 = arr[i][j].Length;
                arr2[i][j] = new T[length3];

                for (int k = 0; k < length3; k++)
                {
                    arr2[i][j][k] = arr[i][j][k];
                }
            }
        }

        return arr2;
    }

But I just can't figure out how to write a general func that will make a copy of a jagged array of n-depth.

Any help will be appriciated

I tried doing the following:

    public static T[] Clone_Arr<T>(T[] arr)
    {
        int length = arr.Length;
        T[] arr2 = new T[length];

        if (arr.GetType().GetElementType().IsArray)
        {
            for (int i = 0; i < length; i++)
            {
                arr2[i] = Clone_Arr<T>(arr[i]);
                // here i encounter a compilation error: cannot convert from T to T[]
            }
        }
        else
        {
            for (int i = 0; i < length; i++)
            {
                arr2[i] = arr[i];
            }
        }          

        return arr2;
    }

0 Answers0