获取多维数组(C#UNITY)中的特定整(0)维

获取多维数组(C#UNITY)中的特定整(0)维,c#,android,arrays,unity3d,C#,Android,Arrays,Unity3d,我怎么可能只计算多维数组中所需的特定整列 我像这样计算我的整列和整行 //COLUMN for(int col = 0; col < table.GetLength(0); col++) { int sum = 0; //ROW for (int row = 0; row < table.GetLength(1); row++) { if (table[col,row] != null) {

我怎么可能只计算多维数组中所需的特定整列

我像这样计算我的整列和整行

//COLUMN
for(int col = 0; col < table.GetLength(0); col++)
{
    int sum = 0;
    //ROW
    for (int row = 0; row < table.GetLength(1); row++)
    {
         if (table[col,row] != null)
         {
             sum++;
         }
    }
     Debug.Log("table column: " + col + " has " + sum + " data");
}
int prevSum = -1;
for (int col = 0; col < table.GetLength(0); ++col)
{
    int sum = CountRow(table, col);
    Debug.Log("table column :" + col + " has " + sum + " data");
    if (sum == prevSum)
    {
       //comparison happens
    }
}
//列
for(int col=0;col
我想要的是得到特定的整列,然后移动到另一列,就像那样。我需要这样做,因为我需要将它与上一列值和下一列值进行比较


例如:我想检查第2列中有多少数据,然后将其与第1列进行比较。

您就快到了。您只需将当前列的总和存储到列表中:

var List<int> sums = new List<int>();
//COLUMN
for(int col = 0; col < table.GetLength(0); col++)
{
    int sum = 0;
    //ROW
    for (int row = 0; row < table.GetLength(1); row++)
    {
         if (table[col,row] != null)
         {
             sum++;
         }
    }
    Debug.Log("table column: " + col + " has " + sum + " data");
    sums.Add(sum);
}

你快到了。您只需将当前列的总和存储到列表中:

var List<int> sums = new List<int>();
//COLUMN
for(int col = 0; col < table.GetLength(0); col++)
{
    int sum = 0;
    //ROW
    for (int row = 0; row < table.GetLength(1); row++)
    {
         if (table[col,row] != null)
         {
             sum++;
         }
    }
    Debug.Log("table column: " + col + " has " + sum + " data");
    sums.Add(sum);
}
有一个解决方案:)

//泛型函数
公共静态int CountRow(T[,]表,int col)
{
if(table==null | | col<0 | | col>=table.GetLength(1))
{
//处理错误
返回-1;
}
//这与外部for循环的块相同
整数和=0;
for(int row=0;row
然后像这样使用它

//COLUMN
for(int col = 0; col < table.GetLength(0); col++)
{
    int sum = 0;
    //ROW
    for (int row = 0; row < table.GetLength(1); row++)
    {
         if (table[col,row] != null)
         {
             sum++;
         }
    }
     Debug.Log("table column: " + col + " has " + sum + " data");
}
int prevSum = -1;
for (int col = 0; col < table.GetLength(0); ++col)
{
    int sum = CountRow(table, col);
    Debug.Log("table column :" + col + " has " + sum + " data");
    if (sum == prevSum)
    {
       //comparison happens
    }
}
intprevsum=-1;
for(int col=0;col
找到了解决方案:)

//泛型函数
公共静态int CountRow(T[,]表,int col)
{
if(table==null | | col<0 | | col>=table.GetLength(1))
{
//处理错误
返回-1;
}
//这与外部for循环的块相同
整数和=0;
for(int row=0;row
然后像这样使用它

//COLUMN
for(int col = 0; col < table.GetLength(0); col++)
{
    int sum = 0;
    //ROW
    for (int row = 0; row < table.GetLength(1); row++)
    {
         if (table[col,row] != null)
         {
             sum++;
         }
    }
     Debug.Log("table column: " + col + " has " + sum + " data");
}
int prevSum = -1;
for (int col = 0; col < table.GetLength(0); ++col)
{
    int sum = CountRow(table, col);
    Debug.Log("table column :" + col + " has " + sum + " data");
    if (sum == prevSum)
    {
       //comparison happens
    }
}
intprevsum=-1;
for(int col=0;col
从我的角度来看,上面的代码应该可以工作。你有什么意外的行为吗?不同的结果?您所要做的就是将每列的行数存储在另一个列表中。@HimBromBeere是的,它正在工作,但只有在我想得到整列和整行的情况下才可以。这段代码的问题是它会迭代并获取整个数据。我想要的是,在迭代该列之后,它将进入下一列,现在比较第一列与第二列的数据长度是否相同。使用
GetLength
时,假设您的表每列的行数相同(顺便说一句,这是“表”的定义)。为什么需要再次检查?@HimBromBeere正因为如此,从我的角度来看,上面的代码应该可以工作。你有什么意外的行为吗?不同的结果?您所要做的就是将每列的行数存储在另一个列表中。@HimBromBeere是的,它正在工作,但只有在我想得到整列和整行的情况下才可以。这段代码的问题是它会迭代并获取整个数据。我想要的是,在迭代该列之后,它将进入下一列,现在比较第一列与第二列的数据长度是否相同。使用
GetLength
时,假设您的表每列的行数相同(顺便说一句,这是“表”的定义)。为什么需要再次检查此项?@HimBromBeere这是因为此参数超出范围???@TheGinxx009那么您可能只有一列。您应该开始使用调试器:从哪里获得异常?索引是什么?关于和[0]==和[1]。我仍然在使用c#4.0,所以
Listsums=newlist()
then
if(sums[0]==sums[1])
@TheGinxx009正如我已经说过的,这是因为
sums
似乎不包含任何值或只包含一个值,而只有当您的表只有一个列时才能包含该值。参数超出范围???@TheGinxx009则您可能只有一个列。您应该开始使用调试器:从哪里获得异常?索引是什么?关于和[0]==和[1]。我仍然在使用c#4.0,所以
Listsums=newlist()
然后
如果(sums[0]==sums[1])
@TheGinxx009正如我已经说过的,这是因为
sums
似乎不包含任何值或只包含一个值,而只有当您的表只有一个列时才可能包含该值。