首页 > 解决方案 > 在 C# 中累积值

问题描述

我正在尝试复制一个简单的操作,即第 n 次累积一个值。所以像 value 4 take 10 times 这样的东西是:[0,4,8,12,16,20,24,28,32,36]。我究竟做错了什么?

        public static IList SumValues(int value, int times)
        {
            List<object> sums = new List<object>();
            for (int i = 0; i < times; i = i + 1)
            {
                while (i < times)
                    sums.Add(value);
            }
            return sums;
        }

标签: c#accumulate

解决方案


我不知道您为什么要创建一个列表,object其中非常清楚地int在列表中。我已更改代码以返回 an IEnumerable<int>,因此您可以在不实现的情况下进行迭代。考虑到这一点,您可以使代码更短一些:

public static IEnumerable<int> SumValues(int initialValue, int iterations)
{
    for(int i = 0; i < iterations; i++)
    {
        yield return initialValue * i;
    }       
}

如果您在 aList<T>或 an中需要它,Array您可以调用适当的方法(.ToList().ToArray()):

List<int> someIntList = SumValues(4, 10).ToList();
int[] someIntArray = SumValues(4, 10).ToArray();

在这里提琴


推荐阅读