对于带计数问题的福彩12选5走势图

豆镇

成员
已加入
2019年2月15日
留言内容
15
编程经验
5-10
大家好,

快速提问,我应该知道这一点。如果我有一个IEnumerable,然后在该for福彩12选5走势图下面,如果我需要将最后一个索引设置为此IEnumerable的Count,是否应该在for福彩12选5走势图之前将其计数放入变量中,如果我将其放在下面的代码段中,则会枚举它它每次计数吗?


ForLoop:
IEnumerable customers;

for(var i = 0; i < customers.Count(); i++)
{
}
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,522
地点
悉尼,澳大利亚
编程经验
10+
如果可能,您应始终避免多次枚举列表。您应该始终避免多次执行相同的复杂代码。如果您知道每次都会提供相同的结果,则几乎应该永远不要调用相同的方法或多次获得相同的属性。在这种情况下,请始终在开始时获得所需的结果,并保存以备后用。

On a more specific point, it would be rare to use an IEnumerable like that anyway. The specific point is that they can be enumerated, so you'd normally use a foreach loop.
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,528
地点
弗吉尼亚州切萨皮克
编程经验
10+
它取决于实现IEnumerable的类。 LINQ扩展方法试图变得聪明,并询问底层实现。如果基础实现是知道其元素数量的数组或列表或某种其他类型,则它将快速返回计数。另一方面,如果实现不知道其元素数,则LINQ扩展方法将枚举所有项以对其进行计数。

因此,为了回答您的问题,由于您正在与接口交谈,并且实际上并不了解底层实现,因此最安全的方法是在开始福彩12选5走势图之前调用Count()并将值存储在变量中。结果将枚举两次:一次调用Count(),第二次在for福彩12选5走势图中。

但是,通常,如果您要做的只是处理集合中的每个项目,请使用foreach(),以便仅枚举一次。
 
最佳 底部