C# 在C中累积值#

C# 在C中累积值#,c#,accumulate,C#,Accumulate,我试图复制一个简单的动作,将一个值累计n次。因此,类似于值4的值乘以10将是:[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;

我试图复制一个简单的动作,将一个值累计n次。因此,类似于值4的值乘以10将是:[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;
        }
公共静态IList SumValues(int值,int次)
{
列表总和=新列表();
对于(int i=0;i<次;i=i+1)
{
而(i<次)
增加(价值);
}
回报金额;
}

您没有更改
值的值,因此它始终是原始值<代码>添加
将项目追加到列表末尾。

尝试以下操作:

public static IList SumValues(int value, int times)
{
   List<int> sums = new List<int>();
   for (int i = 0; i < times; i++)
   {
       sums.Add(i*value);
   }
   return sums;
}
公共静态IList SumValues(int值,int次)
{
列表总和=新列表();
for(int i=0;i
公共静态IList SumValues(int-value,int-times)//您需要定义返回列表的类型
{
List sums=new List();//您可能可以在此处使用List而不是object,除非此函数之外有一些逻辑将它们视为对象
int incrementedValue=0;
对于(inti=0;i

这将始终在列表中包含“0”

我不是很确定,但请尝试使用 加总(价值*i);而不是你的总数。增加(价值)


提示:在for循环中,使用i++而不是i=i+1。它更常见,打字也更快。

我不知道为什么你要创建一个
对象的列表,而它在列表中的
int
。我已经更改了代码以返回一个
IEnumerable
,这样您就可以在不具体化的情况下进行迭代。考虑到这一点,您可以将代码缩短一点:

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

Fiddle

@ljumbor这也不行,我想你指的是总和。当然是加(value*I)。我太累了,应该睡觉了:)更正了我的答案。@ljumbor仅仅因为订单的原因它就不能工作?它不是订单。非常感谢您的反馈!我是C#和编程的新手,所以非常感谢您的解释!
public static IEnumerable<int> SumValues(int initialValue, int iterations)
{
    for(int i = 0; i < iterations; i++)
    {
        yield return initialValue * i;
    }       
}
List<int> someIntList = SumValues(4, 10).ToList();
int[] someIntArray = SumValues(4, 10).ToArray();