将对象从列表复制到同一列表中的另一个对象

时间:2017-04-10 12:30:09

标签: c# object

我已将对象列表定义为List<NewLayerCounterMethod> NewLayer = new List<NewLayerCounterMethod>();,其中类NewLayerCounterMethod中的每个对象都有四个属性,例如:VehicleType, VehicleCounter,Counter,Updating

对象数量NewLayer为10,我想将NewLayer[7]复制到NewLayer[5],这样如果NewLayer[7]发生更改,NewLayer[5]将不会更改。

请注意,当我想要将一个对象的属性替换为另一个对象的属性时,我不想创建一个新对象,这使得它与Stackoverflow上的其他问题有所不同,我认为它不是重复。< / p>

2 个答案:

答案 0 :(得分:1)

您需要克隆该对象,否则您只需将引用存储在两个字段中并更改它们。看到这个答案:

Creating a copy of an object in C#

How do you do a deep copy of an object in .NET (C# specifically)?

答案 1 :(得分:0)

在这种情况下,您需要向NewLayerCounterMethod类添加一个函数,在该类中将另一个类的所有属性复制到新类。它看起来有点像那样:

public void TakeProperties(NewLayerCounterMethod otherObject)
{
    propA = otherObject.propA;
    propB = otherObject.propB;
    //And so on for all properties left
}

您可以添加警卫,以便只有在新值与旧值不同时才更新属性,但我建议将这些警卫直接添加到属性中。

上面的方法被称为:

NewLayer[5].TakeProperties(NewLayer[7]);