1

私はクラスを持っています:

ProductData ProductData = new ProductData(); 

リストを作成しました:

List<ProductData> ProductDataList = new List<ProductData>();

次のようにリストにアイテムを追加すると:

ProductDataList.Add(ProductData);

リストの最後の要素が以前のすべての要素を上書きしています。なぜこれが起こっているのかわかりません。誰か助けてもらえますか?

構造の詳細は次のとおりです。

ProductData ProductData = new ProductData();

List<ProductData> ProductDataList = new List<ProductData>();

while (myReader.Read())
                {
                    ProductData.value = “some values I am assigning go here”;

          ProductDataList.Add(ProductData);
       };
4

2 に答える 2

9

複数の新しいProductDataインスタンスを作成するのではなく、同じインスタンスを何度も変更します。

ProductData ProductData = new ProductData();ほとんどの場合、ループの外側からループの内側に行を移動したいだけです。これにより、1 つではなく、N 個のインスタンスを確実に作成できます。

于 2013-04-04T18:46:50.163 に答える
1

完全なコードは次のようになるはずです。

ProductData ProductData = new ProductData(); 
ProductData.Something = "1st";

ProductDataList.Add(ProductData);

ProductData.Something = "1st";

ProductDataList.Add(ProductData);

ProductData.Something = "2nd";

ProductDataList.Add(ProductData);

ProductData.Something = "3rd";

ProductDataList.Add(ProductData);

そして、それらはすべて「3rd」の値を持っているため、上書きしているとあなたは言います。リストの問題ではなく、オブジェクト インスタンスの問題です。

インスタンスを 1 つだけ作成したことに注意してくださいnew ProductData。変更すると、新しいインスタンスを作成するのではなく、唯一のインスタンスを変更するだけです。

持っているオブジェクトごとに新しいインスタンスを作成する必要があります。

于 2013-04-04T18:51:15.550 に答える