ArgumentNullException в ConcurrentDictionary.AddOrUpdateC#

Место общения программистов C#
Ответить
Anonymous
 ArgumentNullException в ConcurrentDictionary.AddOrUpdate

Сообщение Anonymous »

Я наблюдаю странное поведение при вызове метода AddOrUpdate ConcurrentDictionary:

Код: Выделить всё

static void Main(string[] args)
{
var t = new ConcurrentDictionary();
t.AddOrUpdate("boo", null, (k, v) => null);
}
выдает ArgumentNullException:

Код: Выделить всё

System.ArgumentNullException was unhandled
HResult=-2147467261
Message=Value cannot be null.
Parameter name: addValueFactory
ParamName=addValueFactory
Source=mscorlib
StackTrace:
at System.Collections.Concurrent.ConcurrentDictionary`2.AddOrUpdate(TKey key, Func`2 addValueFactory, Func`3 updateValueFactory)
at ConcurrentDictionaryTest.Program.Main(String[] args)
Почему? Разве мне не разрешено добавлять нулевые значения в качестве значений в параллельный словарь? В документации не сказано ничего особенного о значении null, поскольку значение и последующие значения работают нормально:

Код: Выделить всё

static void Main(string[] args)
{
var t = new ConcurrentDictionary();
const object defaultValue = null;
t.AddOrUpdate("boo", defaultValue, (k, v) => defaultValue);
}
Итак, что происходит?

Подробнее здесь: https://stackoverflow.com/questions/413 ... ddorupdate
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»