我正在与Visual Studio中的C#一起工作。如果我使用这样的数据结构:
bool[,] arr = new bool[rows, cols];
这很好用。然后我尝试像这样分配给这个数组:
arr[row, col] = true;
问题是当调试器到达此行时,它会立即退出该函数。我尝试将其包装在try/catch
块中,并且不会抛出任何异常。代码运行正常,调试器只是拒绝调试通过多维数组的赋值。我尝试使用锯齿状数组,然后调试器将正常运行(它也可以在列表列表中正常工作)。但是有些情况下我被迫使用多维数组。有谁知道发生了什么,以及如何解决这个错误?
编辑:这是一个虚拟的,自包含的类,会导致问题发生:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ArrayTest : MonoBehaviour
{
private bool[,] arr;
private int numRows = 8;
private int numCols = 11;
bool truthVal = true;
// Use this for initialization
void Start () {
arr = new bool[numRows, numCols];
}
// Update is called once per frame
void Update () {
AssignArr();
}
public void AssignArr()
{
for (int i = 0; i < numRows; ++i)
{
for (int j = 0; j < numCols; ++j)
{
arr[i, j] = truthVal;
}
}
truthVal = !truthVal;
}
}
所有这一切都是遍历数组并更改其所有真值。在退出之前,调试器将在AssignArr()
中运行一次循环。