【问题标题】:How can I check if an array index is out of range? [closed]如何检查数组索引是否超出范围? [关闭]
【发布时间】:2017-07-21 01:50:43
【问题描述】:

如何检查数组索引是否超出范围?或者阻止它发生。

【问题讨论】:

  • 检查长度。
  • Does Index of Array Exist的可能重复
  • 我该怎么做? p.s.它正在从数据库中接收信息
  • 如果这是关于从数据库中获取数据,那么您需要更改您的问题以包含该信息。
  • 这感觉就像你掉进了XY Problem。当然,您可以检查Array.Length 以避免使用超出范围的索引。但是从你的评论来看,你有一个问题,你首先使用了不正确的索引,你从哪里得到这个索引,是什么导致它超出范围?不过,您似乎并不热衷于发布任何代码,并且问题已得到解答。祝你好运。

标签: c# arrays


【解决方案1】:

检查数组是否越界的另一种方法是创建一个函数。这将检查索引是否“在界限内”。如果索引低于零或超过数组长度,您将得到结果 false

private bool inBounds (int index, int[] array) 
{
    return (index >= 0) && (index < array.Length);
}

【讨论】:

  • 这应该作为数组类的成员函数内置..
  • typo.. s/b 长度(大写)
【解决方案2】:
int index = 25;
if(index >= 0 && index < array.Length)
{
    //it exists
}

来源:Does Index of Array Exist

【讨论】:

  • 为了将来参考,如果您发现另一个您认为有确切答案的问题,不要将该答案复制到您自己的答案中。相反,请点击问题下方的“标记”选项,选择“标记关闭 > 重复问题”,然后选择适当的问题。
  • 当有人传递任何小于0 的值时,它将失败。所以需要额外检查index &gt;= 0,它将if语句组合成if(index &gt;= 0 &amp;&amp; index &lt; array.Length){}
【解决方案3】:

正确的方法是

int index = 25;
if (index >= 0 && index < array.Length)
{}

【讨论】:

  • 错别字 array.Length 不是 array.Legth (挑剔)
  • 长度拼写错误。
  • 现在已修复。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 2021-11-04
相关资源
最近更新 更多