C # Неверный экземпляр словаря?

17

Мне нужно неглубоко скопировать словарь в 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: не удается получить доступ к защищенному члену object.MemberwiseClone()' via a qualifier of type System.Collections.Generic.Dictionary». Определитель должен быть типа «PointFlagger» или получен из него »

Не совсем уверен, что это значит ... Есть ли другой способ мелкой копии словаря / исправить мой код выше?

    
задан Georges Oates Larsen 14.01.2012 в 01:44
источник

2 ответа

36

Чтобы получить мелкую копию, просто используйте конструктор Dictionary<TKey, TValue> , так как он принимает IEnumerable<KeyValuePair<TKey, TValue>> . Он добавит эту коллекцию в новый экземпляр.

Dictionary<int, int> flagsn = new Dictionary<int, int>(flags);
    
ответ дан JaredPar 14.01.2012 в 01:46
источник
  • Duuurr! Вероятно, мне следовало подойти поближе к документации ... Спасибо, Джаред! Я отвечу на ваш ответ, когда это возможно. –  Georges Oates Larsen 14.01.2012 в 01:47
  • Извините за задержку в принятии ответа, не уверен, что произошло там –  Georges Oates Larsen 23.01.2012 в 03:01
  • @Georges не проблема. Просто рад помочь –  JaredPar 23.01.2012 в 07:32
  • @ Jared, на самом деле, похоже, что он не принимает IEnumerable <KeyValuePair>, но словарь IDictionary <TKey, TValue> –  Mar 10 '16 at 8:31 10.03.2016 в 09:31
8

Это общий способ, который я нашел там, где вам не нужно явно писать какой-либо тип, который я предпочитаю для удобства обслуживания:

var ShallowCopy = OriginalDictionary.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
    
ответ дан gatopeich 14.03.2012 в 16:29
источник
  • Что такое «kvp => kvp.Key, kvp => kvp.Value» в этом контексте. Как добавить ключ и значение. Это показывает ошибку на моем конце –  Pratik 30.07.2013 в 06:56
  • Вам нужно добавить инструкцию using для System.Linq для доступа к методу расширения ToDictionary (). –  Johnathon Sullinger 12.08.2014 в 04:23