我目前有很多阵列的工作和调试目的一般印刷我写了一个通用的Print()
方法来打印不同类型的阵列交错数组
static void Main()
{
Print(new double[]{ 1, 2, 3 });
// Output: [ 1, 2, 3 ]
}
static void Print<T>(T[] array)
{
int size = array.Length;
if (size == 0)
return;
string str = "[ ";
for (int i = 0; i < size; i++)
{
str += array[i].ToString();
if (i < size - 1)
str += ", ";
}
str += " ]";
Console.WriteLine(str);
}
迄今工作正常的。然后,我想打印一个数组的数组,就像double[][]
,并尝试以下操作:
static void Main()
{
Print(new double[][]
{
new double[] { 1, 2 },
new double[] { 3, 4 },
new double[] { 5, 6 },
});
// Output: [ 1, 2 ]
// [ 3, 4 ]
// [ 5, 6 ]
}
static void Print<T>(T[] array)
{
if (array.Length == 0)
return;
if (array[0].GetType().IsArray)
{
foreach (var element in array)
{
Print<T>(element);
}
}
else
{
int size = array.Length;
string str = "[ ";
for (int i = 0; i < size; i++)
{
str += array[i].ToString();
if (i < size - 1)
str += ", ";
}
str += " ]";
Console.WriteLine(str);
}
}
我只是想检查的array
元素又是数组,如果是这样,我再次调用该函数打印的每个element
的array
。但Print(element)
不起作用,因为element
是类型T
而不是T[]
,我不知道如何告诉编译器,在这种情况下,T
是一个数组。我需要做些什么来完成这项工作?
一个可能很重要的一点 - 你所谓的阵列数组实际上被称为锯齿阵列。 C#支持('double [] []'和'double [,]')。你需要支持两者还是你真的只处理数组数组(锯齿形数组)。在这里看到更多的信息:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/jagged-arrays – Jamiec
我需要参差不齐的数组,因为我在与Accord.Net周围玩,他们的SVM的。他们的方法大部分都是以锯齿状数组为参数。 –