C# 列表对象中的数据将被最新值替换。
列表中新添加的数据将替换C# 列表对象中的数据将被最新值替换。,c#,list,collections,C#,List,Collections,列表中新添加的数据将替换列表中以前的值。 在下面的代码段中,listRM中的所有项目都包含地址信息。我做错了什么 public void Assign(Rprts PrevItem, Rprts CurrentItem, List<Fields> listRM) { Fields field = new Fields(); field.hding = "Name :"; field.FName
列表中以前的值。
在下面的代码段中,listRM
中的所有项目都包含地址
信息。我做错了什么
public void Assign(Rprts PrevItem, Rprts CurrentItem, List<Fields> listRM)
{
Fields field = new Fields();
field.hding = "Name :";
field.FName = PrevItem.fname;
field.LName = PrevItem.lname;
field.addrs1 = "";
field.addrs2 = "";
field.City = "";
listRM.Add(field);
field.hding = "Address :";
field.Qty = "";
field.Name = "";
field.Dept = "";
field.addrs1 = "ABC";
field.addrs2 = "XYZ";
field.City = "UVW";
listRM.Add(field);
}
公共无效分配(Rprts PrevItem、Rprts CurrentItem、List listRM)
{
字段字段=新字段();
field.hding=“名称:”;
field.FName=previitem.FName;
field.LName=previitem.LName;
field.addrs1=“”;
field.addrs2=“”;
field.City=“”;
listRM.Add(字段);
field.hding=“地址:”;
字段数量=”;
字段名称=”;
field.Dept=“”;
field.addrs1=“ABC”;
field.addrs2=“XYZ”;
field.City=“UVW”;
listRM.Add(字段);
}
您必须为每个要添加的条目创建一个新的字段
实例
第一次调用listRM.Add(field)
时,将a传递给字段
对象(它也只是一个引用)。更改此对象时,列表指向的对象也会更改
您可以在第二次调用listRM.Add(field)
之前放置一个breakpont,并检查field
和listRM.Results
的值,例如,但不一定使用
现在要开始创建新项目,只需执行以下操作:
field = new Field();
field. // set properties again
listRM.Add(field);
创建了一个实例:<代码>字段类,并将相同的对象添加到列表中,两次修改中间的对象。因此,正如预期的那样,您的列表将包含该对象两次,但两个列表项都将指向同一个已修改的实例
字段
。
尝试为要添加到列表中的每个项目创建全新的对象:
Fields字段=新字段()代码>