[英]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.