c# dictionary shallow-copy

¿C#Diccionario de copia superficial?



dictionary shallow-copy (2)

Esta es una forma genérica que encontré donde no tiene que escribir explícitamente ningún tipo, que prefiero por razones de mantenimiento:

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

Necesito copiar un diccionario en c #.

Por ejemplo:

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

Desafortunadamente, eso devuelve el error: "error CS1540: no se puede acceder al objeto miembro protegido.MemberwiseClone object.MemberwiseClone()'' via a qualifier of type System.Collections.Generic.Dictionary''. El calificador debe ser del tipo` PointFlagger ''o derivado de él "

No estoy completamente seguro de lo que esto significa ... ¿Hay alguna otra forma de copiar un diccionario / corregir mi código anterior?


Para obtener una copia superficial, solo use el constructor de Dictionary<TKey, TValue> ya que toma un IEnumerable<KeyValuePair<TKey, TValue>> . Agregará esta colección a la nueva instancia.

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