C# 浅拷贝字典?

发布于 2024-12-27 07:59:59 字数 439 浏览 1 评论 0 原文

我需要在 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”或从中派生”

不完全确定这意味着什么......是否有另一种方法来浅复制字典/修复上面的代码?

I need to shallow copy a dictionary in c#.

For instance:

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

Unfortunately, that returns the error: "error CS1540: Cannot access protected member object.MemberwiseClone()' via a qualifier of typeSystem.Collections.Generic.Dictionary'. The qualifier must be of type `PointFlagger' or derived from it"

Not entirely sure what this means... Is there another way to shallow copy a dictionary/fix my code above?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱,才寂寞 2025-01-03 07:59:59

要获取浅拷贝,只需使用 Dictionary 的构造函数,因为它采用 IEnumerable>。它将将此集合添加到新实例中。

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

To get a shallow copy, just use the constructor of Dictionary<TKey, TValue> as it takes an IEnumerable<KeyValuePair<TKey, TValue>>. It will add this collection into the new instance.

Dictionary<int, int> flagsn = new Dictionary<int, int>(flags);
爱*していゐ 2025-01-03 07:59:59

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

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

This is a generic way I found where you don't have to explicitly write any type, which I prefer for maintainability reasons:

var ShallowCopy = OriginalDictionary.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文