首页 > 解决方案 > 如何在不更改其内存位置的情况下将类的值复制到其他类

问题描述

我想知道是否有任何方法可以将一个对象复制到另一个对象,而不更改它们的内存位置,如下例所示。

 class PersonData
    {
        public string PersonName;
        public int age;

        public PersonData(string name, int age)
        {
            this.age = age;
            PersonName = name;
        }
    }
    class Program
    {

        static void Main(string[] args)
        {
            object person1 = new PersonData("FirstPerson",20);
            object person2 = new PersonData("secondPerson",30);

            person1 = person2;
        }
    }

person1 将开始指向 person2 的内存位置。我想做的只是将person2的值复制到person1的内存位置。除了

person1.age = person2.age;
person1.name = person2.name;

因为我事先不知道对象的字段。

先感谢您。

标签: c#

解决方案


使用deep copy,

Deep copy将创建一个实例并将值复制到自己的内存位置。

.Net 有很多方法可以做到这一点。

我认为使用序列化对象是最简单的方法。

示例代码(使用Newtonsoft.Json包):

 class PersonData
    {
        public string PersonName;
        public int age;

        public PersonData(string name, int age)
        {
            this.age = age;
            PersonName = name;
        }
    }
    class Program
    {

        static void Main(string[] args)
        {
            object person1 = new PersonData("FirstPerson",20);
            object person2 = new PersonData("secondPerson",30);

            //First ,serialize the object, then copy to other object with deserialize
            person2 = JsonConvert.DeserializeObject<Person>(JsonConvert.SerializeObject(source));
        }
    }

推荐阅读