首页 > 解决方案 > 如何在c#中基于特定的源对象创建各种副本?

问题描述

我有一个 MyObject 类型的复杂 objectA。我想基于特定的 objectA 创建此 MyObject 的多个变体。

public class MyObject()
{
    int myAttr1;
    string myAttr2;
    MyChildObject1 myChildObject1;
    MyChildObject2 myChildObject2;
    ...
}

public List<MyObject> createVariations(MyObject myObject)
{
    List<MyObject> myObjectList = new List<MyObject>();
    MyObject myFirstVariation = myObject;
    myFirstVariation.myAttr1 = myObject.myAttr1 + 5;

    myObjectList.Add(myFirstVariation);

    // TODO: Do different specific variations of the same source object!
    ...

    return myObjectList;
}

我知道这行不通,因为我只是创建了对 myObject 的多个引用并且我正在更改它的参数,所以列表中会有很多相同对象的引用。

我将如何获得具有不同配置的对象列表。我真的必须为这些对象创建一个复制构造函数吗?先感谢您。

标签: c#referencecopy-constructordeep-copy

解决方案


推荐阅读