我在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>();
}
}
答案 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)