Подтвердить что ты не робот

С# Неглубоко копировать словарь?

Мне нужно неглубоко скопировать словарь в С#.

Например:

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" или получен из него "

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

4b9b3361

Ответ 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);