這是我的代碼的一部分。c#:未將對象引用設置爲對象的實例
List<DateTime>[] newarraydate1 = new List<DateTime>[70];
DateTime temp1 = arraydate1[k][aa];
newarraydate1[k].Add(temp1);
我用過messagebox.show(temp1),並且在temp1中有一個值。該錯誤顯示在程序的第一行。
這是我的代碼的一部分。c#:未將對象引用設置爲對象的實例
List<DateTime>[] newarraydate1 = new List<DateTime>[70];
DateTime temp1 = arraydate1[k][aa];
newarraydate1[k].Add(temp1);
我用過messagebox.show(temp1),並且在temp1中有一個值。該錯誤顯示在程序的第一行。
您正在聲明一個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);
當您創建一個數組,你只創建了包含結構。其成員初始化爲默認值,在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();
如果是故意的,你創建一個陣列的名單DateTime
s,您必須首先在條目中創建每個列表
newarraydate1[k] = new List<DateTime>();
只有那麼你可以Add
到k
列表(如你問題的最後一行代碼)。