簡體   English   中英

清單.add()的C#問題

[英]C# issue with list .add()

我有一堂課:

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);
       };

您不是在創建多個新的ProductData實例,而是一次又一次地更改同一實例。

您幾乎可以肯定只想移動一下行: ProductData ProductData = new ProductData(); 從循環的外部到循環的內部 這將確保您創建N個實例,而不是一個。

我敢打賭,您的完整代碼必須是這樣的:

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”。 列表不是問題,而是對象實例

請注意,您僅創建了一個實例,那就是那里的new ProductData 更改時,您不是在創建新實例,而只是在更改您的唯一實例。

您應該為每個對象創建新實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM