C#浅拷贝字典

本文关键字:字典 浅拷贝 | 更新日期: 2023-09-27 18:20:28

我需要在c#中浅层复制一个字典。

例如:

Dictionary<int,int> flags = new Dictionary<int,int>();
flags[1] = 2;
flags[2] = 3;
flags[0] = 9001;
Dictionary<int,int> flagsn = flags.MemberwiseClone();

不幸的是,返回错误:"错误CS1540:无法访问受保护的成员object.MemberwiseClone()' via a qualifier of type System.Collections.Generic.Dictionary"。限定符必须是"PointFlagger"类型或派生自该类型"

不完全确定这意味着什么。。。有没有其他方法可以浅层复制字典/修复上面的代码?

C#浅拷贝字典

要获得浅拷贝,只需使用Dictionary<TKey, TValue>的构造函数,因为它需要IEnumerable<KeyValuePair<TKey, TValue>>。它将把这个集合添加到新实例中。

Dictionary<int, int> flagsn = new Dictionary<int, int>(flags);

这是我发现的一种通用方法,不必显式编写任何类型,出于可维护性的原因,我更喜欢这种方法:

var ShallowCopy = OriginalDictionary.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);