Если у меня есть экземпляр ConcurrentDictionary
, не имеет значения, использую ли я свойство Count
или LINQ's Any()
? Я бы предпочел написать dict.Any()
вместо dict.Count > 0
как я думаю Any()
более наглядно.Является ConcurrentDictionary.Count> 0 таким же, как ConcurrentDictionary.Any()?
Меня беспокоит только правильность, а не производительность. Случай использования
void process()
{
if (concurrentDictionary.Count <= 0) // or !Any() ?
return; // dictionary is empty, nothing to do
// ...
}
Вопрос в том, почему вы имеете дело с 'Any' или' Count' в первую очередь. Это даст вам значение моментального снимка, которое по самой природе всей ситуации может быть недействительным в следующий момент. Если вам нужен снимок содержимого словаря, используйте его метод .ToArray', тогда вы можете проанализировать его содержимое. –
В любом случае, это зависит от того, что вы определяете в том же контексте. Выполняет ли тот же код? № –
Семантически, да, они одинаковы. Производительность разумная, нет, она не гарантируется. Вы всегда должны использовать 'Any()' для лучшей производительности. См. Http://stackoverflow.com/a/691155/50776 – casperOne