C# 浅拷贝字典?
我需要在 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:无法通过类型为 System.Collections.Generic.Dictionary 的限定符访问受保护的成员 object.MemberwiseClone()'。限定符必须是输入“PointFlagger”或从中派生”
不完全确定这意味着什么......是否有另一种方法来浅复制字典/修复上面的代码?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要获取浅拷贝,只需使用
Dictionary
的构造函数,因为它采用IEnumerable>
。它将将此集合添加到新实例中。To get a shallow copy, just use the constructor of
Dictionary<TKey, TValue>
as it takes anIEnumerable<KeyValuePair<TKey, TValue>>
. It will add this collection into the new instance.这是我发现的一种通用方法,您不必显式编写任何类型,出于可维护性的原因,我更喜欢这种方法:
This is a generic way I found where you don't have to explicitly write any type, which I prefer for maintainability reasons: