Моя команда в настоящее время обсуждает эту проблему.
Код, о котором идет речь, - это что-то вроде строк
if (!myDictionary.ContainsKey(key))
{
lock (_SyncObject)
{
if (!myDictionary.ContainsKey(key))
{
myDictionary.Add(key,value);
}
}
}
Некоторые из сообщений, которые я видел, говорят, что это может быть большой НЕТ НЕТ (при использовании TryGetValue). Тем не менее члены нашей команды говорят, что это нормально, так как "ContainsKey" не выполняет итерацию в коллекции ключей, но проверяет, содержится ли ключ через хэш-код в O (1). Следовательно, они утверждают, что здесь нет никакой опасности.
Я хотел бы получить ваши честные мнения по этой проблеме.