2013-05-04 114 views
0

這是我的代碼的一部分。c#:未將對象引用設置爲對象的實例

List<DateTime>[] newarraydate1 = new List<DateTime>[70]; 
DateTime temp1 = arraydate1[k][aa]; 
newarraydate1[k].Add(temp1); 

我用過messagebox.show(temp1),並且在temp1中有一個值。該錯誤顯示在程序的第一行。

回答

1

您正在聲明一個List<DateTime>的數組,但從不在該數組中創建任何實際的List實例。您需要修改你的代碼是這樣的:

List<DateTime>[] newarraydate1 = new List<DateTime>[70]; 
for(int i=0;i<70;i++) 
    newarraydate1[i]=new List<DateTime>(); 
DateTime temp1 = arraydate1[k][aa]; 
newarraydate1[k].Add(temp1); 
2

當您創建一個數組,你只創建了包含結構。其成員初始化爲默認值,在List<DateTime>的情況下爲null。基本上,你會得到70個null參考資料,每個參考資料都可以保存DateTime的列表。

爲了解決這個問題,您應該在一個循環中分配新的陣列

List<DateTime>[] newarraydate1 = new List<DateTime>[70]; 
for (int i = 0 ; i != newarraydate1.Length ; i++) { 
    newarraydate1[i] = new List<DateTime>(); 
} 

或使用LINQ:

List<DateTime>[] newarraydate1 = Enumerable 
    .Range(0, 70) 
    .Select(n => new List<DateTime>()) 
    .ToArray(); 
0

如果是故意的,你創建一個陣列名單DateTime s,您必須首先在條目中創建每個列表

newarraydate1[k] = new List<DateTime>(); 

只有那麼你可以Addk列表(如你問題的最後一行代碼)。

相關問題