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