首页 > 解决方案 > 挣扎于方法和类的交互方式

问题描述

我是学习 C# 的新手,正在尝试实现以下代码,但是我无法这样做,收到错误“命名空间不能直接包含字段或方法等成员”。

namespace Grades
{
    public string LetterGrade
    {
        get
        {
            string result;
            if (RoundResult(AverageGrade) >= 90)
            {
                result = "A";
            }
            else if (RoundResult(AverageGrade) >= 80)
            {
                result = "B";
            }
            else if (RoundResult(AverageGrade) >= 70)
            {
                result = "C";
            }
            else
            {
                result = "F";
            }
            return result;
        }
    }

    private double RoundResult(double result)
    {
        double r;
        r = Math.Round(result);
        return r;
    }

    public class GradeStatistics
    {
        public float AverageGrade = 50;
        public float HighestGrade = 78;
        public float LowestGrade = 11;
    }
}

我想要完成的是创建一个名为“RoundResult”的方法,它将对“AverageGrade”结果进行四舍五入。我只是将其作为一个实验来尝试了解方法之间如何相互作用。

我在学习 C# 时面临的最大障碍是关于方法和类,如何正确使用它们,何时将它们放在现有类中或创建自己的单独类等。如果有人有任何推荐的资源进入广泛的步骤关于如何实现方法和类的详细信息,将不胜感激。

编辑:感谢 Reputation Farmer 和 wazdev 的回答。我想补充一个额外的问题......

为什么“GradeStatistic”方法是从同一个类中调用“AverageGrade”的有效方法,而我的“RoundResult”方法不能在同一个类中?

标签: c#

解决方案


出现此错误消息是因为您的命名空间声明中直接有两个方法 - 它们需要包装在一个类中。

一种可能的解决方案是创建一个“GradeCalculator”类并将您的两个方法放入其中......请注意,这不是最佳解决方案,但我尝试尽可能少地修改:

namespace Grades
{
    public class GradeCalculator
    {
        public string LetterGrade
        {
            get
            {
                string result;
                if (RoundResult(GradeStatistics.AverageGrade) >= 90)
                {
                    result = "A";
                }
                else if (RoundResult(GradeStatistics.AverageGrade) >= 80)
                {
                    result = "B";
                }
                else if (RoundResult(GradeStatistics.AverageGrade) >= 70)
                {
                    result = "C";
                }
                else
                {
                    result = "F";
                }
                return result;
            }
        }

        private double RoundResult(double result)
        {
            double r;
            r = Math.Round(result);
            return r;
        }
    }

    public static class GradeStatistics
    {
        public static float AverageGrade = 50;
        public static float HighestGrade = 78;
        public static float LowestGrade = 11;
    }
}

推荐阅读