首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的"Foreach“问题

问简单的"Foreach“问题
EN

Stack Overflow用户
提问于 2017-08-24 13:27:07
回答 3查看 121关注 0票数 1

我在visual studio中遇到一个错误。我已经定义了等级和等级,对吗?这条foreach语句的用法有什么问题?

完整代码如下:

代码语言:javascript
复制
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>();    
    }
}
EN

回答 3

Stack Overflow用户

发布于 2017-08-24 13:36:33

如果没有函数包装,就不能在类中编写函数代码。好吧-至少不是以这种形式。

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

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

代码语言:javascript
复制
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;
    }
}
票数 3
EN

Stack Overflow用户

发布于 2017-08-24 13:39:54

任何循环都必须包含在类成员中,如函数。您不能在类中直接编写循环。您的实际代码应该如下所示:

代码语言:javascript
复制
public class GradeBook{
    float PassGrade = 70;

    public void FunctionWithLoop(){
        foreach(var grade in grades){
             //Some code
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-08-24 13:41:15

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

比方说,如果你的目的是打印所有的成绩,你会这样做。

代码语言:javascript
复制
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();实例时

我将使用函数():

代码语言:javascript
复制
book.PrintGrades() // will print all the grades.

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

如果您可以在不使用函数的情况下执行foreach,那么您的simple将无法调用它。

您需要记住c# it OOP语言。(如果你需要foreach用于程序处理,而不是特定的方法,你可以在Main中使用它(也是函数..))

例如:

代码语言:javascript
复制
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)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45853564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档