2013-02-15 40 views
1

我正在寻找一种方法来防止在尝试访问特定数组索引时发生IndexOutOfRangeException。防止数组上的IndexOutOfRangeException

我有一个通用代码,有时在array[index]有值,有些时候没有。

因此,试图获得其价值之前,我曾尝试这些检查:

if(array[index] != null) { 
    ... Do Stuff 
} 

也试过:

if(!String.IsNullOrEmpty(array[index])) { 
    ... Do Stuff 
} 

他们都trows一个IndexOutOfRangeException

我怎么能执行此检查?

+0

为什么你的代码试图数组的边界之外访问存储在首位?不要试图捕捉错误。请删除错误。 – 2013-02-15 01:31:03

+0

'array'的类型是什么? – gdoron 2013-02-15 01:31:11

+0

刚刚修复。我的代码需要修复一些错误。这是其中之一。我只是好奇,为什么我无法检查空索引。谢谢 – 2013-02-15 01:36:08

回答

9

很简单:

if (index < array.Length) 
+1

虽然这是正确的..我觉得它应该在循环初始化器..而不是从内部检查(我假设它是一个循环)。 – 2013-02-15 01:33:37

+0

谢谢。有效。我必须修复我的代码以防止出现这种情况。我只是很好奇,为什么要控制空值不起作用 – 2013-02-15 01:35:14

+0

@GuilhermeLongo:'Array [999]'_isn't_'null';相反,它根本不存在。在比较之前,您首先获得价值的例外情况。 – SLaks 2013-02-15 14:06:37

0

你也可以使用的try ... catch取消错误。蛮力?

try 
{ 
    var x = array[index]; 
} 
catch(Exception ex) 
{ 
} 

,更好的

if(array.Length > index) 
    var x = array[index];