这是事情:
object[] arrayText = new object[1];
if (arrayText[1] == null)
{
MessageBox.Show("Is null");
}
Run Code Online (Sandbox Code Playgroud)
我们知道这将是null,但它抛出一个异常,但我不想在try/catch块中处理它,因为它嵌套在循环中,try/catch会降低它的速度,它也不会看起来真的很棒:
object[] arrayText = new object[1];
try
{
if (arrayText[1] == null)
{
}
}
catch (Exception ex)
{
MessageBox.Show("Is null");
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的建议!
Luc*_*ero 23
null这不是问题,但索引无效.C#中的数组是基于0的,因此如果创建一个包含1个元素的数组,则只有索引0有效:
array[0] == null
Run Code Online (Sandbox Code Playgroud)
您可以通过在访问索引之前手动检查边界来避免这种情况:
if (index < array.Length) {
// access array[index] here
} else {
// no exception, this is the "invalid" case
}
Run Code Online (Sandbox Code Playgroud)
Gro*_*mer 11
object[] arrayText = new object[1];
if (arrayText[0] == null)
{
MessageBox.Show("Is null");
}
Run Code Online (Sandbox Code Playgroud)
试试吗?数组基于0,因此尝试访问arrayText [1]会产生OutOfBoundsException.并且try/catch不会真正影响你的性能,那时堆栈中的数量并不多.