克隆List项目时遇到问题。
Class Item
{
String Name;
Int Age;
}
比我有一个列表<>
List<Item> Items = new List<Items>();
现在,如果我做这个动作
Item val= Items[i];
现在如果我改变了val的年龄,它也会改变Items [i]年龄。 如何从List中克隆项目,因此在更改克隆项目中的值时,List中的值不会更改? 这个如果是为了考试,但我的班级更大,它包含超过20个值。
答案 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
的新对象,并使用列表项初始化它的成员变量。同样,要么将成员变量Name
和Age
设置为public
,要么通过公共属性公开它们。