我收到错误
数组为空时,在此行“'索引超出了数组的范围”
string Open = array[0].ToString();
上的。
我使用了“ if” 语句来查看数组为空时是否可以绕过它。
但是,为什么我仍然出现此错误?如何绕过/修复它?
if (array != null || array.Length != 0)
{
int c = array.Count();
string Open = array[0].ToString(); <--- ERROR
}
答案 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)