It’s good for performance, but also, if used foolhardily, the performance penalty can be too big. One example can be the
ConcurrentStack<T> class. As with a lot of collections, this stack also has a
Count property. But because it’s a lock free implementation using linked list the
Count isn’t that easy. Actually it’s
O(n) and this can be especially bad for big stacks. So use with care. As the remarks for this property recommends, if you need to know just whether it’s empty of not, the
IsEmpty is better (though realize, that in time you check it it might be empty, but not on next line where you’re about to perform some action and vice versa).
Use the tools, but also know your tools.