0

これは私のコードの一部です。

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

私は messagebox.show(temp1) を使用しましたが、temp1 に値があります。エラーは、プログラムの最初の行に表示されます。

4

3 に答える 3

2

配列を作成するときは、それを含む構造のみを作成します。そのメンバーはデフォルト値に初期化されList<DateTime>ますnull。基本的にnull、それぞれが のリストを保持できる 70 の参照を取得します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();
于 2013-05-04T15:10:17.880 に答える
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);
于 2013-05-04T15:09:11.527 に答える