列表的平均值

rlt*_*221 7 c# list stopwatch

我想制作第一次点击开始rotorSpeed秒表然后第二次点击添加rotorSpeed.ElapsedMilliseconds到的代码list.在第二次点击重置秒表开始计时一次,然后在第三次点击再加rotorSpeed.ElapsedMillisecondslist.代码中没有错误,但是当我调试它时,我收到错误double average = list.Average();

Stopwatch rotorSpeed = new Stopwatch(); List<double> list = new List<double>();

private void button1_Click(object sender, EventArgs e)
{
    i++;
    //Getting rotor speed
    if (i != 2)
    {               
        if (rotorSpeed.IsRunning)
        {
            rotorSpeed.Stop();
            list.Add(rotorSpeed.ElapsedMilliseconds);
            rotorSpeed.Start();                   
        }
        else
        {
            rotorSpeed.Reset();
            rotorSpeed.Start();
        }
    }

    double average = list.Average();
    textBox2.Text = average.ToString();
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

> System.Core.dll中发生了未处理的"System.InvalidOperationException"类型异常

附加信息:序列不包含任何元素

Rah*_*hul 14

list是空的,所以要求Average()它抛出异常.更改以下行

double average = list.Average();
Run Code Online (Sandbox Code Playgroud)

double average = list.Count > 0 ? list.Average() : 0.0;
Run Code Online (Sandbox Code Playgroud)

  • 为什么`0.0`?您认为人们可以默默使用零吗?另一种选择是`list.Count> 0?list.Average():double.NaN`.在某种意义上,空序列的平均值可以说是"0.0/0.0". (3认同)

Tig*_*ies 5

if (list.Count > 0)
{
    textBox2.Text = list.Average().ToString();
}
Run Code Online (Sandbox Code Playgroud)