2013-02-15 38 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];