如何将我的一些代码更改为Class?

时间:2019-04-13 18:38:17

标签: c# class methods

我编写了一些代码,并且可以正常工作,但是现在尝试获取一些代码并将其更改为Class。我已经将部分代码更改为第一个方法,然后将其转换为Class。但是这最后一部分代码很难弄清楚如何更改为方法,因此我可以创建一个类。

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 average)  return($“平均会有一个{average.ToString(” n2“)},它是A。”),但是会得到我不理解的各种错误。

2 个答案:

答案 0 :(得分:1)

我会将等级设为非可变结构。它代表一个值,并且应该是一个值类型。类是引用类型。

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)的内容。

答案 1 :(得分:0)

这应该有效

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