C# 包含字典的对象上的MemberwiseClone无效

C# 包含字典的对象上的MemberwiseClone无效,c#,C#,我有一些包含Dictionary的对象-我尝试MemberwiseClone-但这会返回一个新对象,但在Dictionary上,我得到的是原始Dictionary对象的引用,而不是副本 为什么?? 如何在不使用foreach的情况下对我的对象进行简单克隆,并将词典的原始对象放入新词典中 MSDN说: 创建当前对象的浅层副本 正如@firda所指出的,浅拷贝并不会创建每个字段的深度拷贝,而是创建浅拷贝 对存储在对象字段中的对象引用进行浅复制意味着只有引用(“指针”)的值将被复制到新对象。因此,在您

我有一些包含Dictionary的对象-我尝试MemberwiseClone-但这会返回一个新对象,但在Dictionary上,我得到的是原始Dictionary对象的引用,而不是副本

为什么?? 如何在不使用foreach的情况下对我的对象进行简单克隆,并将词典的原始对象放入新词典中

MSDN说:

创建当前对象的浅层副本

正如@firda所指出的,浅拷贝并不会创建每个字段的深度拷贝,而是创建浅拷贝

对存储在对象字段中的对象引用进行浅复制意味着只有引用(“指针”)的值将被复制到新对象。因此,在您的情况下,字段中引用的
词典
不会被实际复制(克隆)-旧对象和克隆对象中的字段仍将引用相同的旧
词典

这和通常的作业是一样的原则-

p.S.C#和.NET没有提供任何简单的本地方式来组织深度复制。您可以尝试使用一些第三方工具或手动实现该方法-

(MemberwiseClone不是DeepClone,将仅复制第一级-因此对其他对象的引用将引用克隆对象中的同一对象)。