вставить значения в ConcurrentDictionary - PullRequest
4 голосов
/ 25 марта 2011

Я пытаюсь вставить значения в ConcurrentDictionary, я привык к словарю, так что это не работает:

  public ConcurrentDictionary<string, Tuple<double, bool,double>> KeyWords =  new
                ConcurrentDictionary<string, Tuple<double, bool,double>>
    {
        {"Lake", 0.5, false, 1}
    };

Как правильно, поэтому я делаю это в классе.

Ответы [ 2 ]

10 голосов
/ 25 марта 2011

Инициализаторы коллекций являются синтаксическим сахаром для вызовов общедоступного метода Add(), который ConcurrentDictionary не предоставляет - вместо него есть метод AddOrUpdate().

Альтернативой, которую вы можете использовать, является промежуточный Dictionary<>, переданный перегрузке конструктора, который принимает IEnumerable<KeyValuePair<K,V>>:

public ConcurrentDictionary<string, Tuple<double, bool,double>> KeyWords =  
    new ConcurrentDictionary<string, Tuple<double, bool,double>>( 
       new Dictionary<string,Tuple<double,bool,double>>
       {
          {"Lake", Tuple.Create(0.5, false, 1.0)},
       } 
    );

Примечание: я исправил ваш пример для использования Tuple.Create(), так каккортежи не выводятся из инициализаторов.

3 голосов
/ 22 февраля 2016

Вы можете использовать инициализатор словаря :

var dict = new ConcurrentDictionary<int, string>
    {
        [0] = "zero",
        [1] = "one",
    };

Да, я знаю, вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...