相关疑难解决方法(0)

深度克隆对象

我想做的事情如下:

MyObject myObj = GetMyObj(); // Create and fill a new object
MyObject newObj = myObj.Clone();
Run Code Online (Sandbox Code Playgroud)

然后更改未在原始对象中反映的新对象.

我不经常需要这个功能,所以当有必要的时候,我已经使用了创建一个新对象然后单独复制每个属性,但它总是让我觉得有更好或更优雅的处理方式情况.

如何克隆或深度复制对象,以便可以修改克隆对象而不会在原始对象中反映任何更改?

.net c# clone

2135
推荐指数
34
解决办法
77万
查看次数

如何在.NET中执行对象的深层复制(特别是C#)?

我想要一个真正的深拷贝.在Java中,这很容易,但是你如何在C#中做到这一点?

.net c# serialization clone

560
推荐指数
6
解决办法
42万
查看次数

克隆没有序列化的对象

我在SO处找到了许多解决方案,而且是通过序列化/反序列化(进入内存和后退)来处理对象的深层克隆.

它要求克隆的类标记为[Serializable].我碰巧把我的类(大部分都是)标记为[DataContract]因为我使用DataContractSerializer序列化为XML.

我只介绍了[Serializable]属性,因为需要对其中一些类实例进行深度克隆.但是,现在通过DCS进行序列化/反序列化的事情发生了,因为它不再起作用了 - 关于在反序列化时期望不同的XML元素的错误.如果我删除了[Serializable]错误消失了.

我有什么选择?我只想尽可能简单地深入克隆我的对象.

c# clone xml-serialization datacontractserializer

6
推荐指数
1
解决办法
5686
查看次数

将所有类字段和属性复制到另一个类

我有一个通常包含字段,属性的类。我要实现的不是此:

class Example
{
    public string Field = "EN";
    public string Name { get; set; }
    public int? Age { get; set; }
    public List<string> A_State_of_String { get; set; }
}

public static void Test()
{
    var c1 = new Example
    {
        Name = "Philip",
        Age = null,
        A_State_of_String = new List<string>
        {
            "Some Strings"
        }
    };
    var c2 = new Example();

    //Instead of doing that
    c2.Name = string.IsNullOrEmpty(c1.Name) ? "" : c1.Name;
    c2.Age = c1.Age ?? 0;
    c2.A_State_of_String = …
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
1
解决办法
6671
查看次数