简单的“Foreach”问题

时间:2017-08-24 05:27:07

标签: c# foreach

我在visual studio中收到错误。我已经定义了成绩和成绩,对吗?使用这个foreach声明有什么不对?

完整代码如下:

namespace GradesStr8 {    
    class GradeBook {

        float passgrade = 70;
        foreach (float grade in grades) {

    }

        public void AddGrade(float grade) {    
            grades.Add(grade);    
        }

        List<float> grades = new List<float>();    
    }
}

3 个答案:

答案 0 :(得分:3)

您无法在没有函数换行的情况下在类中编写函数代码。 嗯,至少不是这种形式。

你需要问问自己这个功能需要做什么?你想从这个循环中得到什么?它是所有等级的总和,并给你一个答案?平均? 如果是这种情况,那么您可能会寻找这种实现方式:

*注意:您可能会发现LINQ更易于使用,但现在让我们来看看基本实现

class GradeBook
{
    private readonly List<float> _grades;
    private const float PASSGRADE = 70;

    public GradeBook()
    {
        _grades = new List<float>();
    }

    public void AddGrade(float grade)
    {
        _grades.Add(grade);
    }

    //Your new function
    public float Sum()
    {
        float sum = 0;
        foreach (float grade in _grades)
        {
            sum += grade;
        }
        return sum;
    }

    //Your new function Avg
    public float Avg()
    {
        if(_grades.Count == 0)
        {
            return 0;
        }
        float sum = Sum();
        return sum/_grades.Count;
    }
}

答案 1 :(得分:0)

任何循环都必须包含在类成员(如函数)中。你不能直接在课堂上写一个循环。 您的实际代码应该是:

public class GradeBook{
    float PassGrade = 70;

    public void FunctionWithLoop(){
        foreach(var grade in grades){
             //Some code
        }
    }
}

答案 2 :(得分:0)

你不能在没有函数的情况下在类定义中编写foreach循环!

如果打印所有成绩的目的,请说明你会这样做..

namespace GradesStr8 {    
    class GradeBook {

        List<float> grades = new List<float>();
        float passgrade = 70;    

publuc void PrintGrades()
{

        foreach (float grade in grades) {
        Console.WriteLine(grade);
    }
}

        public void AddGrade(float grade) {    
            grades.Add(grade);    
        }
    }
}

在这种情况下,当我创建我的类(对象)GradeBook book = new GradeBook();

的实例时

我将有函数():

book.PrintGrades() // will print all the grades.

book.AddGrade(75); // will add grade to the list.

如果你能在没有功能的情况下做foreach,那么你就无法调用它。

你需要将那个c#重新用作OOP语言。 (如果你需要foreach用于程序进程而不是特定的方法,你可以在Main中使用它(也是函数..))

例如:

namespace GradesStr8
{
    class GradeBook
    {
        public List<float> grades { get; set; }
        private const float passgrade = 70;

        public GradeBook()
        {
            grades = new List<float>();
        }

        public void AddGrade(float grade)
        {
            grades.Add(grade);
        }
    }

    public class program
    {
        public static void Main()
        {
            GradeBook book = new GradeBook();
            book.grades.Add(75);
            book.grades.Add(46);

            foreach (float grade in book.grades)
            {
                Console.WriteLine(grade);
            }
        }
    }
}

您需要阅读(Essential C# 6.0