Как реализовать общую функцию для копирования массива с зазубринами n-й глубины по значению (без ссылки)?

Я не могу найти способ скопировать зубчатый массив n-й глубины по значению (а не по ссылке).

Вот код, который я написал для копирования зубчатого массива глубины 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;
    }

Но я просто не могу понять, как написать общую функцию, которая сделает копию зубчатого массива n-глубины.

Любая помощь будет принята

Я пробовал делать следующее:

    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;
    }

person Gilad Freidkin    schedule 30.03.2019    source источник
comment
О, черт! Невозможно ограничить параметры универсального типа массивами. Ну да ладно, моя идея вылетает из окна. :-(   -  person    schedule 30.03.2019
comment
Ты все равно пытаешься помочь :)   -  person Gilad Freidkin    schedule 30.03.2019