当前位置:  开发笔记 > 编程语言 > 正文

将for(;;)循环转换为foreach

如何解决《将for(;;)循环转换为foreach》经验,为你挑选了1个好方法。

所以我一直在尝试将这些代码转换为每个代码,但我一直遇到问题,而且我不确定如何做到这一点,我唯一能做的就是一个小代码但是它重复了好几次,我仍然是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.



1> Eric Lippert..:

你已经回答了你的具体问题,但没有更广泛的问题"如何将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.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有