将for(;;)循环变成foreach
本文关键字:foreach 循环 for | 更新日期: 2023-09-27 18:26:31
所以我一直试图把的这些代码变成for each,但我一直遇到问题,我不太确定如何做,我做过的唯一一件事就是一个小代码,但它重复了好几次,我对C#和使用for()还很陌生,所以我真的不知道该怎么做。很抱歉,我对这个还很陌生,我很感激能得到的帮助!
double[] numbers = new double[9.7, 2.2, 4.3, 1.7, 5.6, 3.6, 4.5, 1.3, 4.6, 3.0];
static double ComputeSum(double[] array)
{
double sum = 0;
int intCounter;
for (intCounter = 0; intCounter < array.Length; intCounter++)
{
sum += array[intCounter];
}
return sum;
}
static double ComputeAverage(double[] array)
{
return ComputeSum(array) / array.Length;
}
您已经回答了您的特定问题,但没有回答"如何将for
循环转换为foreach
?
让我们看看您的循环,并进行一些更好的命名。(不要根据C#中的类型来命名。要根据它们的含义来命名。)
for (index = 0; index< array.Length; index++)
{
sum += array[index];
}
最重要的是,您要理解这个循环所代表的思想。表面级别的读数是"对于该数组中的每个有效索引,获取与该索引关联的元素值,并将其添加到总和中"。但我们可以把它抽象一点。我们也可以说,循环的意思是"对于集合中的每个元素,将其添加到总和中"。
这就是for
循环和foreach
循环之间的关键区别。for
循环集中于索引,并通过索引获取值。foreach
循环集中于值本身,而根本不考虑索引。
知道了我们现在可以看到如何将for
转换为foreach
。首先定位作为值的位,并为其创建一个变量:
for (index = 0; index < array.Length; index++)
{
var item = array[index];
sum += item;
}
现在我们看到,循环体几乎可以完全用对项的操作来表达,而不是用对索引的操作来表示。然后我们将其转换为foreach
:
foreach (var item in array)
{
sum += item;
}
所有与索引有关的内容都会被删除。如果您发现无法删除所有与索引有关的内容,那么您可能不应该使用foreach
。
由于foreach
循环将集合的元素一个接一个地呈现给代码,因此您所需要做的就是
foreach (double num in Numbers)
{
sump += num;
}
Console.WriteLine("{0}", sump);
您还可以使用Sum
扩展方法来完全消除循环结构:
var sump = Numbers.Sum(); // <<== The loop is hidden inside the Sum() method
Console.WriteLine("{0}", sump);