所以我一直在尝试将这些代码转换为每个代码,但我一直遇到问题,而且我并不确定如何做到这一点,这是我唯一能做到的事情。已经完成的工作是一个很小的代码,但它重复了几次,我仍然是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;
}
答案 0 :(得分:8)
您已经回答了具体问题,但没有更普遍的问题&#34;如何将for
循环变为foreach
?
让我们看看你的循环,并提供更好的命名。 (不要根据C#中的类型来命名。根据其含义命名。)
for (index = 0; index< array.Length; index++)
{
sum += array[index];
}
最重要的是,您了解此循环所代表的想法。对于此数组中的每个有效索引,表面级别读数为“#34”,获取与该索引关联的元素值并将其添加到总和中。但我们可以使它更抽象一点。我们还可以说循环意味着对于集合中的每个元素,将其添加到总和中。
这是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
。
答案 1 :(得分:4)
由于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);