所以我一直在尝试将这些代码转换为每个代码,但我一直遇到问题,而且我不确定如何做到这一点,我唯一能做的就是一个小代码但是它重复了好几次,我仍然是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; }
Eric Lippert.. 8
你已经回答了你的具体问题,但没有更广泛的问题"如何将for
循环变为foreach
?
让我们看看你的循环,有一些更好的命名.(不要根据C#中的类型来命名.根据其含义命名.)
for (index = 0; index< array.Length; index++) { sum += array[index]; }
最重要的是你理解这个循环代表的想法.表面级别读数是"对于此数组中的每个有效索引,获取与该索引关联的元素值并将其添加到总和".但我们可以使它更抽象一点.我们还可以说循环意味着"对于集合中的每个元素,将其添加到总和中".
这是for
循环和foreach
循环之间的关键区别.该for
循环集中在指数和你获取通过索引值.该foreach
循环集中在价值本身,而没有考虑到指数的.
知道我们现在可以看到如何将a for
转换成a foreach
.首先找到作为值的位,并为其创建变量:
for (index = 0; index < array.Length; index++) { var item = array[index]; sum += item; }
现在我们看到循环体几乎可以完全根据对项的操作来表达,而不是在索引上.然后我们将其转换为foreach
:
foreach (var item in array) { sum += item; }
处理索引的所有内容都将被删除.如果您发现无法删除与索引有关的所有内容,那么您可能不应该使用foreach
.
你已经回答了你的具体问题,但没有更广泛的问题"如何将for
循环变为foreach
?
让我们看看你的循环,有一些更好的命名.(不要根据C#中的类型来命名.根据其含义命名.)
for (index = 0; index< array.Length; index++) { sum += array[index]; }
最重要的是你理解这个循环代表的想法.表面级别读数是"对于此数组中的每个有效索引,获取与该索引关联的元素值并将其添加到总和".但我们可以使它更抽象一点.我们还可以说循环意味着"对于集合中的每个元素,将其添加到总和中".
这是for
循环和foreach
循环之间的关键区别.该for
循环集中在指数和你获取通过索引值.该foreach
循环集中在价值本身,而没有考虑到指数的.
知道我们现在可以看到如何将a for
转换成a foreach
.首先找到作为值的位,并为其创建变量:
for (index = 0; index < array.Length; index++) { var item = array[index]; sum += item; }
现在我们看到循环体几乎可以完全根据对项的操作来表达,而不是在索引上.然后我们将其转换为foreach
:
foreach (var item in array) { sum += item; }
处理索引的所有内容都将被删除.如果您发现无法删除与索引有关的所有内容,那么您可能不应该使用foreach
.