我正在处理一个数组,我想在其中添加一些值。在某些方面,只需一次计算即可完成,它将在数组外部请求索引。
有没有办法说'如果索引在数组之外,假设值为0'?
有点像这样:
try
{
grid[x,y] = grid[x-1,y] + grid[x-1,y-1];
//This is simplified
x++;
}
catch (IndexOutOfRangeException)
{
grid[x - 1, y - 1] = 0;
}
答案 0 :(得分:4)
为简单起见,假设您有一个整数数组,您可以考虑extension method,如下所示:
static class ArrayExtension
{
static int SafeGetAt(this int[,] a, int i, int j)
{
if(i < 0 || i >= a.GetLength(0) || j < 0 || j >= a.GetLength(1))
return 0;
return a[i, j];
}
}
然后以
的形式访问数组元素grid.SafeGetAt(x, y);
另一种方法可能是创建一个包装类,它在内部访问数组并且使用indexer。在这种情况下,您可以继续使用[,]
- 语法来访问元素。
我不建议使用异常,这些异常非常慢,应该在常规应用程序工作流程中避免使用。