c# - C#列表项值不一致
问题描述
我正在向我的列表中添加值,它会用新分配的值覆盖以前的值。我想这与引用类型和值类型有关。
class EODSales
{
public string Sales { get; set; }
public int TC { get; set; }
public decimal Amount { get; set; }
}
class EODBO
{
public string Sales { get; set; }
public List<EODSales> Values { get; set; }
}
.
.
.
.
List<EODSales> EODSalesList = new List<EODSales>();
List<EODBO> eodboList = new List<EODBO>();
.
.
.
//Inside a method -
EODSales sales = new EODSales();
sales.Sales = "Prev";
sales.TC = 5;
sales.Amount = 500;
EODSalesList.Add(sales);
EODBO obj = new EODBO();
obj.Sales = "Baking Order";
obj.Values = EODSalesList;
eodboList.Add(obj);
//Inside another method
EODSales sales = new EODSales();
sales.Sales = "Prev";
sales.TC = 10;
sales.Amount = 1000;
EODSalesList.Add(sales);
EODBO obj = new EODBO();
obj.Sales = "Refund";
obj.Values = EODSalesList;
eodboList.Add(obj);
我希望我的 eodboList 是这样的:列表中的第一项具有 Sales =“Baking Order”,值具有“Prev”、5 和 500。而列表中的第二项具有 Sales =“Refund”和值分别有“Prev”、10 和 100。我当前的代码只是将 EODBO.Values 分配给列表中的所有其他项目,这意味着我的第一个项目 Baking Order 具有“Prev”、10 和 100 的值。
更新我将 EODBO 中的值更改为 public EODSales Values { get; 放; 这是我的代码 https://dotnetfiddle.net/dHNr9o
解决方案
You have to change your code as like
below:
// First Method
EODSales sales = new EODSales();
sales.Sales = "Prev";
sales.TC = 5;
sales.Amount = 500;
EODSalesList.Add(sales);
EODBO obj = new EODBO();
obj.Sales = "Baking Order";
obj.Values.Add(sales);
eodboList.Add(obj);
Same way, You have change into second method:
replace obj.Values=sales to obj.Values.Add(sales)
推荐阅读
- javascript - 在mongodb的两个集合中保存消息时使用`mongoose transactions`
- flutter - Flutter:BloC 在应用程序测试中注入模拟
- java - Spring Batch 启动失败
- discord - 异步事件结束后如何删除命令的冷却时间?
- excel - 使用 VBA 将 Excel 工作表导出为 PDF
- php - 教义,在 InvalidProxyDirectoryException.php 第 18 行:
- android - Android 本机库链接器在 gradle 更新后停止工作
- html - 汉堡菜单链接无法正常工作
- asp.net - 无法将表“AspNetRoles”用于实体类型“AspNetRoles”,因为它正在用于实体类型“IdentityRole”
- javascript - 函数调用中的 Javascript