如何安全地检查数组边界

Loj*_*Loj 4 c# arrays

我在2D阵列中制作生命游戏.我需要确定所有相邻单元格何时为空,所以我只测试所有单元格.除非被检查的单元格是边界,否则它很有效.然后测试X + 1当然会抛出异常,因为索引超出了数组边界.我能以某种方式处理这个而不是处理异常吗?谢谢

Cod*_*aos 5

使用GetLength(0)GetLength(1)获取数组的宽度和高度.

运行时还使用了一个简洁的性能技巧来进行自己的边界检查:转换为unsigned int以将两个检查减少为一个.但是,如果检查确实对性能至关重要,那么您可以使用它.

(i >= 0) && (i < length)
Run Code Online (Sandbox Code Playgroud)

(uint)i < length
Run Code Online (Sandbox Code Playgroud)


Hen*_*man 5

如果你想要速度,你必须以不同的方式对待边缘单元,并用

for(int x = 1; x < Size-1; x++)  // these all have x-1 and x+1 neighbours
Run Code Online (Sandbox Code Playgroud)