我有一种方法,每次计时器滴答时间隔(间隔:2s)生成一个随机数
public static double RandomNumber(double min, double max)
{
lock (synk)
{
return random.NextDouble() * (max - min) + min;
}
}
我希望将随机方法中的值添加到数组列表中,例如:
ArrayList list = new ArrayList();
list.Add(RandomNumber(double min, double max))
double totalSum = Sum(list);
Sum()
方法是:
private double Sum(ArrayList arr)
{
double sum = 0;
foreach (double i in arr)
{
sum = sum + i;
}
return sum;
}
但是当我检查列表的内容(在textBox中)时,每次只添加最后一个值时都会添加它。我无法将所有值添加到列表中。任何帮助将不胜感激,并提前感谢您。
答案 0 :(得分:1)
虽然我还没有看到完整的代码,但问题是,每次定时器调用您的方法时,您都会创建ArrayList
。您应该在函数外部创建列表,以便保留值。
其次,最好使用List<T>
作为列表容器,因为它是强类型的,并且对您需要的操作具有LINQ支持(除非您使用旧版本。 NET版本)(正如Peter Duniho指出的那样,您甚至不需要整个列表?)。
考虑到以上几点,您的代码应如下所示:
private readonly List<double> _list = new List<double>();
//created and initialized outside of your function
public void CaylledByTimer()
{
_list.Add(RandomNumber(min, max));
double totalSum = _list.Sum(); //you can use built-in LINQ Sum function
}