如何在 C# 中复制类对象 [重复]

Posted

技术标签:

【中文标题】如何在 C# 中复制类对象 [重复]【英文标题】:How to copy a class object in C# [duplicate] 【发布时间】:2018-05-28 02:48:06 【问题描述】:

根据我在 C# 中的理解,当一个对象被分配给另一个相同类型的对象时,它的引用被复制而不是值。所以我想知道如何将一个对象分配给另一个对象,这样它的值就会被复制而不是引用到第二个对象..

【问题讨论】:

【参考方案1】:

可以看到test2.ErrorDetail变成了“DTL2”,而test1.ErrorDetail仍然是“DTL1”。

    public class TestClone : ICloneable
    
        public bool IsSuccess  get; set; 
        public string ErrorCode  get; set; 
        public string ErrorDetail  get; set; 

        public object Clone()
        
            return this.MemberwiseClone();
        
    

    static void Main(string[] args)
    
        var test1 = new TestClone()  IsSuccess = true, ErrorCode = "0", ErrorDetail = "DTL1" ;
        var test2 = (TestClone) test1.Clone();
        test2.ErrorDetail = "DTL2";
    

【讨论】:

优步。但是,不清楚 OP 是否想要深度克隆,您的回答中没有提到 仅供参考,MemberwiseClone() 用于 ShallowCopy 而不是深拷贝,以了解 C# 中的深拷贝和浅拷贝,这是一篇好文章 - geeksforgeeks.org/shallow-copy-and-deep-copy-in-c-sharp【参考方案2】:

你必须克隆一个对象而不是分配一个引用。

【讨论】:

好的..感谢您的快速回复..您能告诉我如何执行克隆而不是赋值 obj2 = obj1; 网上有很多例子。你可以查看这个网址:c-sharpcorner.com/article/cloning-objects-in-net-framework 嗯,这几乎是给定的'

以上是关于如何在 C# 中复制类对象 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 C# 类对象转换为 json? [复制]

在调用API后,将JSON对象反序列化为C#类[重复]。

将基类转换为派生类[重复]

如何知道调用者类 C# [重复]

在c#中通过ref关键字调用类对象[重复]

c#中类对象的排序列表[重复]