2014-03-19 105 views
-4

我試圖運行下面提到的一段代碼,但它在執行後說「索引超出了數組邊界」時會引發錯誤。我無法追查這個問題,任何線索都將不勝感激。C#錯誤異常:索引超出了數組的界限

Data = new objData[ds.Tables[0].Rows.Count]; 


for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
{ 
    Data[i] = new objData(); 

    if (ds.Tables[0].Rows[i]["VALUE"] != DBNull.Value) 
     Data[i].Value = float.Parse(ds.Tables[0].Rows[i]["VALUE"].ToString()); 

    if (ds.Tables[0].Rows[i]["DATE"] != DBNull.Value) 
     Data[i].Date = Convert.ToDateTime(ds.Tables[0].Rows[i]["DATE"].ToString()); 
} 

ds.Dispose();

+2

其中是數據定義? –

+3

你是什麼意思,無法追查這個問題?你不能附加一個調試器的代碼? – Chris

+0

您是否用'objData [] Data = new objData [/ *任何整數值* /]'來初始化'Data'' –

回答

1

問題是數據數組。在這裏,您只是將新的objData分配給未聲明的Data [i]引用。可能您應該聲明數據數組爲

objData[] Data=new objData[ds.Tables[0].Rows.Count] 
+0

也許在數據集中沒有表:) –

+0

錯誤索引超出了數組的範圍,表示數據集中有表。它的數組錯誤:) –

+0

@Haris,我在for循環開始時按照您所描述的初始化了對象。 – user3437533