And*_*ndy 5 .net c# performance hashset
我只想知道HashSet是否hs为空.我不想知道它包含多少元素.
所以我可以用这个:
bool isEmpty = (hs.Count == 0);
Run Code Online (Sandbox Code Playgroud)
...或这个:
bool isEmpty = hs.Any(x=>true);
Run Code Online (Sandbox Code Playgroud)
哪一个提供了更好的结果,性能方面(特别是当HashSet包含大量元素时)?
Tse*_*eng 11
在HashSet上,您可以使用两者,因为HashSet在内部管理计数.
但是,如果您的数据位于对象IEnumerable<T>或IQueryable<T>对象中,result.Any()则优先使用result.Count()(两种Linq方法).
Linq .Count()将迭代整个Enumerable,.Any()只会查看Enumerable中是否存在任何对象.
更新:
只是小的补充:在你的情况下使用HashSet .Count可能是更好的,因为.Any()需要IEmumerator创建和返回这是一个小开销,如果你不打算在你的代码(foreachLinq等)的任何地方使用Enumerator .但我认为这将被视为"微优化".
| 归档时间: |
|
| 查看次数: |
8840 次 |
| 最近记录: |