如何正确克隆List <t>项目?

时间:2017-01-05 09:13:23

标签: c#

克隆List项目时遇到问题。

Class Item
{
String Name;
Int Age;
}

比我有一个列表&lt;&gt;

List<Item> Items = new List<Items>();

现在,如果我做这个动作

Item val= Items[i];

现在如果我改变了val的年龄,它也会改变Items [i]年龄。 如何从List中克隆项目,因此在更改克隆项目中的值时,List中的值不会更改? 这个如果是为了考试,但我的班级更大,它包含超过20个值。

2 个答案:

答案 0 :(得分:0)

Class是引用类型。使用Item val= Items[i];,您只需将Items[i]的引用分配给val,因此当您修改其中一个时,您会修改另一个。

您需要创建新的Item并从原始Item[i]填充其属性:

var val = new Item()
{
    Name = Items[i].Name,
    Age = Items[i].Age
};

您可能还需要在Item类上设置正确的访问权限:

public class Item
{
    public string Name { get; set; }
    public int Age { get; set; }
}

答案 1 :(得分:0)

Item it = new Item();
it.Name = Items[i].Name;
it.Age = Items[i].Age;

创建类Item的新对象,并使用列表项初始化它的成员变量。同样,要么将成员变量NameAge设置为public,要么通过公共属性公开它们。