Итак, у вас есть этот код для оценки каждой оценки по переменным result.Low
и result.High
вне l oop:
result.Low = Math.Min(grade, result.Low);
result.High = Math.Max(grade, result.High);
Но вы определили их так:
result.High = double.MaxValue;
result.Low = double.MinValue;
Следовательно, это невозможно для grade > double.MaxValue
или grade < double.MinValue
Лучшее решение заключается в следующем:
var result = new Statistics();
var firstGrade = grades.DefaultIfEmpty().First(); // get the first grade in the list, or 0 if it's empty
// assign that to average, high, and low
result.Average = firstGrade;
result.High = firstGrade;
result.Low = firstGrade;
// visit every grade after the first
foreach (var grade in grades.Skip(1))
{
result.Low = Math.Min(grade, result.Low);
result.High = Math.Max(grade, result.High);
result.Average += grade;
}
result.Average /= grades.Count;
return result;
Мы также должны рассмотреть случай, когда grades.Count == 0
, что приведет к ошибке в строке result.Average /= grades.Count
. Мы можем исправить это так:
if (grades.Count > 0)
{
result.Average /= grades.Count;
}
return result;