gpt4 book ai didi

c# - If 语句逻辑和数组

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:52 26 4
gpt4 key购买 nike

我有一个方法(在一个类中),它传递 2 个整数,然后在设置为二维网格的锯齿状数组中返回该“坐标”处的值。因此,例如,GetXY(5,6) 将返回恰好位于该位置的任何整数值。

在该方法中,我有一个 if 语句来检查传递的值是否小于零或大于数组的大小,如果值是,则使用 throw new 抛出异常。

该代码部分有效,只是它仅检测行何时为错误值,而在列为错误值时不执行任何操作。

这是我的代码(grid 是在类构造函数中创建的):

public int GetXY(int row, int column)
{

int[] items = grid[column];

if (row < 0 || column < 0 || row >= grid.Length || column >= items.Length)
{
throw new Exception("The passed coordinates are outside the range of the grid. " +
"Passed coordinates: " + row.ToString() + "," + column.ToString() + ".");
}

return grid[row][column];
}

当我执行 GetXY(10,9)(在 10x10 网格上)时,我收到自定义异常消息,除非我执行 GetXY(9, 10) 我得到:

Unhandled Exception: System.IndexOutOfRangeException: Index was outside the boun
ds of the array.
at ProcGen.ProceduralGrid.GetXY(Int32 row, Int32 column) in C:\Users\Lloyd\do
cuments\visual studio 2010\Projects\ProcGen\ProcGen\ProceduralGrid.cs:line 127
at ProcGen.Program.Main(String[] args) in C:\Users\Lloyd\documents\visual stu
dio 2010\Projects\ProcGen\ProcGen\Program.cs:line 27

为什么它只适用于行?出了什么问题?

谢谢

最佳答案

这条线在你到达条件之前抛出了界外

int[] items = grid[column];

确保参数安全后,将其向下移动:

public int GetXY(int row, int column)
{
if (row < 0 || column < 0 || row >= grid.Length || column >= grid[row].Length)
{
throw new Exception("The passed coordinates are outside the range of the grid. " +
"Passed coordinates: " + row.ToString() + "," + column.ToString() + ".");
}
return grid[row][column];
}

关于c# - If 语句逻辑和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com