Geo*_*sen 22 c# dictionary shallow-copy
我需要在c#中浅层复制字典.
例如:
Dictionary<int,int> flags = new Dictionary<int,int>();
flags[1] = 2;
flags[2] = 3;
flags[0] = 9001;
Dictionary<int,int> flagsn = flags.MemberwiseClone();
Run Code Online (Sandbox Code Playgroud)
不幸的是,它返回错误:"错误CS1540:无法访问受保护的成员object.MemberwiseClone()' via a qualifier of typeSystem.Collections.Generic.Dictionary'.限定符必须是"PointFlagger"类型或从中派生出来的"
不完全确定这意味着什么...有没有另一种方法来浅层复制字典/修复上面的代码?
Jar*_*Par 44
为了得到一个浅拷贝,只是使用的构造Dictionary<TKey, TValue>,因为它需要的IEnumerable<KeyValuePair<TKey, TValue>>.它会将此集合添加到新实例中.
Dictionary<int, int> flagsn = new Dictionary<int, int>(flags);
Run Code Online (Sandbox Code Playgroud)
gat*_*ich 10
这是我发现的一种通用方法,您不必显式写入任何类型,我更倾向于出于可维护性原因:
var ShallowCopy = OriginalDictionary.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
Run Code Online (Sandbox Code Playgroud)