ConcurrentDictionary TryGetValue vs []. Является ли [] еще безопасным для потоков?

У меня есть следующий ConcurrentDictionary:

ConcurrentDictionary<Guid, Session> sessions;

Я знаю, что sessions.TryGetValue(key, out session) является потокобезопасным, но мой вопрос: если sessions[key] также потокобезопасен?

sessions.TryGetValue(key, out session) возвращает true или false в зависимости от того, удалось ли получить значение или нет.

Будет ли sessions[key] возвращать null, если он не может получить значение? Я бы так подумал. Может ли кто-нибудь подтвердить или пролить свет на это? Спасибо.

Ответ 1

Он потокобезопасен, но он не вернет null.

В документации четко указано:

Исключения

KeyNotFoundException
Свойство извлекается, а ключ не существует в коллекции.