c#在空数组上“索引在数组的边界之外”

时间:2018-12-16 07:06:53

标签: c#

我收到错误

  

“'索引超出了数组的范围”

数组为空时,在此行string Open = array[0].ToString();上的

我使用了“ if” 语句来查看数组为空时是否可以绕过它。

但是,为什么我仍然出现此错误?如何绕过/修复它?

if (array != null || array.Length != 0)
                {
                    int c = array.Count();
                    string Open = array[0].ToString(); <--- ERROR
                }

5 个答案:

答案 0 :(得分:9)

您在if语句中使用了逻辑OR运算符。您应该使用AND运算符&&

如果两个条件中的任何一个为true,则OR将求值为true,因此只要array不为null,就将运行if语句。

应该是:

if (array != null && array.Length != 0)

答案 1 :(得分:3)

必须是

if (array != null && array.Length != 0)

答案 2 :(得分:3)

更改

if (array != null || array.Length != 0)

if (array != null && array.Length != 0)

答案 3 :(得分:1)

IndexOutOfRangeException 是仅在运行时引发的运行时异常。

根据您的问题,似乎您应该像其他人所说的那样一起使用null和length的检查。

if (array != null && array.Length != 0)

但是因为您尚未将任何答案标记为已接受,所以我必须告诉您将代码放入如下所示的try and catch块中

  try
  {
      if (array != null && array.Length != 0)
      {
         int c = array.Count();
         string Open = array[0].ToString(); <--- ERROR
      }
  }
  catch(Exception ex)
  {
      // Put breakpoint here and see inner exception by hovering your mouse cursor over ex.
  }

您将获得有关此类问题的内部异常的更多详细信息。

答案 4 :(得分:0)

您可以检查一个空数组的长度。但是,如果您尝试对null引用执行此操作,则会出现异常。在这里,您需要&&条件,用于检查null和数组长度,

if (array != null && array.Length != 0)