Collection initializers are syntactic sugar for calls to the public Add() method ... which ConcurrentDictionary does not provide - it has AddOrUpdate() instead.
An alternative you can use is an intermediate Dictionary<> passed to the constructor overload, which accepts 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)}, } );
Note. I corrected your example to use Tuple.Create() , since tuples are not output from initializers.
source share