Я бы сделал оценку не изменяемой структурой.Он представляет значение и должен быть типом значения.Класс является ссылочным типом.
public readonly struct Grade
{
public Grade(double percentage)
{
Percentage = percentage;
}
public double Percentage { get; }
public char Letter
{
get {
if (Percentage >= 90) return 'A';
if (Percentage >= 80) return 'B';
if (Percentage >= 70) return 'C';
if (Percentage >= 60) return 'D';
return 'E';
}
}
public override string ToString() => $"{Percentage:n2} ({Letter})";
}
Поскольку возвращаются операторы if, нет необходимости иметь else-часть.
Затем вы можете легко напечатать сообщение с помощью
double average = gradesList.Average();
var grade = new Grade(average);
Console.WriteLine(
$"There average is a {grade.Percentage:n2} which is an {grade.Letter}.");
Обратите внимание, что, поскольку ToString
переопределено, вы можете распечатать оценку напрямую.
Console.WriteLine($"The average grade is {grade}");
Это будетнапечатать что-то вроде The average grade is 74.25 (C)
.