换句话说,如果有的话,下列哪一项会更快?
List<MyClass> myList;
...
...
foreach (Whatever whatever in SomeOtherLongList)
{
...
if (i < myList.Count)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
要么
List<MyClass> myList;
...
...
int listCount = myList.Count;
foreach (Whatever whatever in SomeOtherLongList)
{
...
if (i < listCount)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
Ste*_*vds 17
这Count只是一个整数.当你问它的价值时,它不会被计算出来.它是'预先计算'所以它是一样的.选项1更具可读性:)
Bri*_*sen 13
因为List<T>它实际上没有必要缓存它,因为它只是一个简单的属性.
但是,Count()可以在any上使用的扩展方法可能IEnumerable非常昂贵,因为它可能需要枚举整个序列以便对其进行计数(对于列表,它只使用属性,但枚举其他任何内容).此外,如果您只需要知道count是否为零,Any()则首选扩展方法.