C# 返回某个值的最简洁方法是;IndexOutOfBounds“;在多维数组中
比如,;给定一个2D数组C# 返回某个值的最简洁方法是;IndexOutOfBounds“;在多维数组中,c#,arrays,C#,Arrays,比如,;给定一个2D数组int[,]arr={{1,2,3},{4,5,6},{7,8,9}&求和函数 int Sum(int[,] arr, int ix, int iy) => arr[ix - 1, iy - 1] + arr[ix - 1, iy] + arr[ix - 1, iy + 1] + arr[ix , iy - 1] + arr[ix , iy]
int[,]arr={{1,2,3},{4,5,6},{7,8,9}代码>&求和函数
int Sum(int[,] arr, int ix, int iy) =>
arr[ix - 1, iy - 1] + arr[ix - 1, iy] + arr[ix - 1, iy + 1] +
arr[ix , iy - 1] + arr[ix , iy] + arr[ix , iy + 1] +
arr[ix + 1, iy - 1] + arr[ix + 1, iy] + arr[ix + 1, iy + 1];
以下代码将出错:
for(int i = 0; i < sx; ++i)
for(int j = 0; j < sx; ++j)
Console.Write("{0} ", Sum(arr, i, j));
默认值为false
,则应产生true
(与上述打印方法相同)
对于2D数组或C#中的一般多维数组,最简洁的实现这种函数的方法是什么?使用将是一种简单而简洁的方法,可以实现您想要的功能-只需让数组被“默认”值(0/false)包围,并确保在“安全边界”内迭代即可
如果更改数组不是一个选项,那么编写helper方法来获取元素将使代码的长度和结构保持不变
T Get<T>(T[,] arr, int ix, int iy)
{
return ix < 0 || ix > arr.GetUpperBound(0) ||
iy < 0 || iy > arr.GetUpperBound(1) ?
default(T) : arr[ix,iy];
}
T获取(T[,]arr,int-ix,int-iy)
{
返回ix<0 | | ix>arr.GetUpperBound(0)||
iy<0 | | iy>arr.GetUpperBound(1)?
默认值(T):arr[ix,iy];
}
所以我只是用填充物包围数组?如果是这样的话,有没有一种不用手动迭代的方法?
T Get<T>(T[,] arr, int ix, int iy)
{
return ix < 0 || ix > arr.GetUpperBound(0) ||
iy < 0 || iy > arr.GetUpperBound(1) ?
default(T) : arr[ix,iy];
}