Как изменить часть моего кода на класс? - PullRequest
3 голосов
/ 13 апреля 2019

Я написал некоторый код, и он работает, но сейчас пытаюсь взять часть моего кода и изменить его на класс.Я уже изменяю часть кода на первый метод, а затем превращаю его в класс.Но в этой последней части кода возникли проблемы с выяснением того, как перейти к методу, чтобы я мог создать класс.

else if (input == "3")
{
    Console.WriteLine("Here are your Students: ");
    Array.Sort(names);
    Console.WriteLine(String.Join(", ", names));                    
    Console.WriteLine("");

    double average = gradesList.Average();

    if (average >= 90)
    {
        Console.WriteLine($"There average is a {average.ToString("n2")} which is an A.");

    }
    else if (average >= 80)
    {
        Console.WriteLine($"There average is a {average.ToString("n2")} which is an B.");
    }
    else if (average >= 70)
    {
        Console.WriteLine($"There average is a {average.ToString("n2")} which is an C.");
    }
    else if (average >= 60)
    {
        Console.WriteLine($"There average is a {average.ToString("n2")} which is an D.");
    }
    else
    {
        Console.WriteLine($"There average is a {average.ToString("n2")} which is an E.");
    }

}

Первая часть, о которой я думал, это оставить и просто изменить классную часть наУчебный класс.Я попытался использовать общедоступную статическую строку GetLetterGrade (int medium) return ($ "Там в среднем есть {medium.ToString (" n2 ")}, которая представляет собой А."), но получаются все виды или ошибки, которые я не понимаю.

Ответы [ 2 ]

1 голос
/ 13 апреля 2019

Я бы сделал оценку не изменяемой структурой.Он представляет значение и должен быть типом значения.Класс является ссылочным типом.

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).

0 голосов
/ 13 апреля 2019

это должно работать

public static char GetLetterGrade(double average)
{
    if (average >= 90)
    {
        return 'A';
    }
    else if (average >= 80)
    {
        return 'B';
    }
    else if (average >= 70)
    {
        return 'C';
    }
    else if (average >= 60)
    {
        return 'D';
    }
    return 'E';
}

, но если вы хотите использовать GetLetterGrade(int average) перегрузку, используйте его следующим образом

double average = gradesList.Average();
var grade = GetLetterGrade((int)average);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...