bool?[,] logicTable = new bool?[width, height];for (int i = 0; i < width; ++i) for (int j = 0; j < height; j++) if (logicTable?[i, j - 1] == true){...}此時我得到索引超出范圍異常(因為 j-1 給出 -1)。這個表達式是否可能:logicTable?[i, j - 1]如果其中一個索引值超出范圍,如何快速返回空值?
1 回答

小唯快跑啊
TA貢獻1863條經驗 獲得超2個贊
如果您使用標準數組(如您的示例中),這是不可能的,因為它們始終是 0 索引的,并且總是拋出越界訪問。
您可以創建自己的包裝器,null為越界情況返回,這可能通過自動提供標記值使某些算法更容易:
class SafeOutOfBoundsArray
{
public SafeOutOfBoundsArray(bool?[,] array)
{
this.array = array;
}
bool?[,] array;
public bool? this[int r, int c]
{
get {
if (array == null ||
r <0 || c < 0 ||
r>=array.GetUpperBound(0)|| c>=array.GetUpperBound(1))
return null;
return array[r,c];}
}
}
- 1 回答
- 0 關注
- 94 瀏覽
添加回答
舉報
0/150
提交
取消