Рассмотрим следующий код:
// holds the actual values
private volatile ConcurrentDictionary<string, Object> values;
public object this[string key] {
get {
// exception is thrown on this line
return values.GetOrAdd(key, null);
}
set {
values.AddOrUpdate(key, value, (k, v) => value);
}
}
Что я хочу сделать, так это просто создать запись в словаре, если она еще не существует; он не должен иметь значения, пока что-то явно не установит его. Я получаю это исключение, хотя:
An unhandled exception of type 'System.ArgumentNullException' occurred in mscorlib.dll
Additional information: Value cannot be null.
В документации указано, что ключ не может быть нулевым, что имеет смысл. почему я получаю это исключение за значение? Я не понимаю этот метод?
null
полностью разрешено в качестве словарного значения. Смотрите ответ Алексея. - person piedar   schedule 21.06.2016