C# 挣扎于方法和类如何交互

C# 挣扎于方法和类如何交互,c#,C#,我刚开始学习C#,正在尝试实现下面的代码,但是我无法实现,因为收到错误“名称空间不能直接包含字段或方法等成员” 我试图实现的是创建一个名为“RoundResult”的方法,该方法将对“AverageGrade”结果进行四舍五入。我这样做仅仅是为了尝试和理解方法之间是如何相互作用的 我在学习C#时面临的最大障碍是方法和类,如何正确使用它们,何时将它们放在现有类中或创建自己的单独类等。如果有人有任何推荐的资源,可以逐步详细介绍如何实现方法和类,我们将不胜感激 编辑:感谢Farmer和wazdev的回

我刚开始学习C#,正在尝试实现下面的代码,但是我无法实现,因为收到错误“名称空间不能直接包含字段或方法等成员”

我试图实现的是创建一个名为“RoundResult”的方法,该方法将对“AverageGrade”结果进行四舍五入。我这样做仅仅是为了尝试和理解方法之间是如何相互作用的

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

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


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

正如错误所说,命名空间不能包含方法。您应该将它们放在一个类中:

namespace Grades
{
    public static class GradeUtil {
        public static string LetterGrade { ... }
        private static double RoundResult(double result) { ... }
    }

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

注意单词
static
。它允许您在没有对象实例的情况下调用方法。也就是说,您可以编写
GradeUtil.LetterGrade…
。现在还不清楚,cut看起来是您想要的。之所以出现此错误消息,是因为您的命名空间声明中有两个方法—它们需要包装在一个类中

一个可能的解决方案是创建一个“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;
    }
}

谢谢你的回答,瓦兹德夫。我理解了错误信息,但仍然很难理解它。为什么“GradeStatistic”方法是从同一个类中调用“AverageGrade”的有效类,而我的“RoundResult”方法不能在同一个类中?GradeStatistics类及其成员是静态的。这意味着您在使用该类之前不需要实例化该类,只需调用GradeStatistics.Average grade即可访问该值。如果希望以相同的方式访问RoundResult,可以将其方法签名更新为静态(即:private static double RoundResult(double result){。。。。。。。
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;
    }
}