Я читал о новых параллельных классах классов в .NET 4 на блог Джеймса Майкла Харе, а страница о ConcurrentQueue<T>
говорит:
Тем не менее, по-прежнему рекомендуется, чтобы для пустых проверок вы вызываете IsEmpty вместо сравнения Count с нолем.
Мне любопытно: если есть причина использовать IsEmpty вместо сравнения Count с 0, , почему класс не проверяет IsEmpty и внутренне проверяет значение 0, прежде чем делать какую-либо дорогостоящую работу для подсчета
например:.
public int Count
{
get
{
// Check IsEmpty so we can bail out quicker
if (this.IsEmpty)
return 0;
// Rest of "expensive" counting code
}
}
Кажется странным предположить это, если он может быть "исправлен" так легко без побочных эффектов?