知道为什么数组的第二个元素没有被赋值吗?

Any idea why second element of array is not being assigned a value?

我设置了一个包含 26 x 26 单元格对象网格的电子表格程序。我设置了一种方法来处理用户输入的公式。例如,用户可以输入 =A1+A2,该方法会检查单元格 A1 和 A2 的值并将它们相加。由于某种原因,第二个单元格的值未分配给数组。

https://pasteboard.co/IqRO23M.png

代码继续其他运算符的 switch case 语句,但这对这个问题并不重要。

public static void ProcessBasicFormula(Cell selectedCell,Cell[,] 
cell,string[] cellsInUse, char operatorInUse)
    {
        int[] valueOfCell = new int[cellsInUse.Length]; //valueOfCell and 
        cellInUse have same length
        int counter = 0;
        double answer = 0.0;
        switch(operatorInUse)
        {
            case ('+'):
             for (int i = 0; i < cellsInUse.Length; i++)
             {
               for (int j = 0; j < cellsInUse.GetLength(0); j++)
               {
                for (int k = 0; k < cellsInUse.GetLength(0); k++)
                {
                  if (cellsInUse[i] == cell[j, k].CellID)
                  {
                    valueOfCell[counter] =Convert.ToInt32(cell[j,k].Text);
                    counter++;
                  }
                 }
                }
               }
          answer = valueOfCell[0] + valueOfCell[1];
          break;

我希望将两个单元格的值相加,但我得到的是第一个值加上 0。

我的假设是:

  1. cellsInUse数组长度准确
  2. 索引 1 处的单元格值不为零的列表项

new int[int] 会将数组初始化为零; int[] valueOfCell = new int[cellsInUse.Length];

cellsInUse 是一维数组;

string[] cellsInUse

一维数组的getLength(0)等同于.length

cellsInUse.length == 2 为真; cellsInUse.GetLength(0) == 2 为真;

所以 jk 循环循环到 2.

我假设第一个单元格值足够幸运,位于 [2,2] 个单元格的第一个子集中。

cellsInUse.GetLength(0) 应该是 cell.GetLength(0) => j 和 cell.GetLength(1) => k