C#按值复制对象

C# Copy an object by value

本问题已经有最佳答案,请猛点这里访问。

我有一个具有许多属性的对象,我需要在每次迭代中创建该对象的一个副本,以便所有属性都用它们的最后一个设置值复制到新生成的对象中。(我不能逐个复制所有属性及其值,因为我的对象实际上是一个自定义用户控件,它具有许多属性,我不知道所有属性!)


有一种更简单的方法可以使用JSON序列化程序将对象克隆到另一个对象。这个技巧不需要修改或实现克隆类上的接口,只需要像json.net这样的JSON序列化程序。

1
2
3
4
5
public static T Clone<T>(T source)
{
    var serialized = JsonConvert.SerializeObject(source);
    return JsonConvert.DeserializeObject<T>(serialized);
}


可以使用此扩展方法复制所有对象字段和属性。尝试复制引用类型的字段和属性时,可能会出现一些错误。

ZZU1〔1〕