С# Неглубоко копировать словарь?
Мне нужно неглубоко скопировать словарь в С#.
Например:
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" или получен из него "
Не совсем уверен, что это значит... Есть ли другой способ мелкой копии словаря/исправить мой код выше?
Ответы
Ответ 1
Чтобы получить мелкую копию, просто используйте конструктор Dictionary<TKey, TValue>
, так как он принимает IEnumerable<KeyValuePair<TKey, TValue>>
. Он добавит эту коллекцию в новый экземпляр.
Dictionary<int, int> flagsn = new Dictionary<int, int>(flags);
Ответ 2
Это общий способ, который я нашел там, где вам не нужно явно писать какой-либо тип, который я предпочитаю для удобства обслуживания:
var ShallowCopy = OriginalDictionary.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);