在ConcurrentDictionary中插入值

时间:2011-03-24 21:33:33

标签: c#-4.0

我正在尝试将值插入ConcurrentDictionary,我习惯使用字典,所以这不起作用:

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

什么是正确的方法,因此我正在上课。

2 个答案:

答案 0 :(得分:10)

Collection initializers是调用公共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(),因为元组不是来自初始值设定项。

答案 1 :(得分:3)

您可以使用dictionary initializer

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

是的,我知道问题是