我在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>();
}
}发布于 2017-08-24 13:36:33
如果没有函数包装,就不能在类中编写函数代码。好吧-至少不是以这种形式。
你需要问你自己这个函数需要做什么?你想从这个循环中得到什么?它是所有成绩的总和,并给你一个答案吗?平均水平?如果是这种情况,那么您可能会寻找这种实现:
*注意:您可能会发现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;
}
}发布于 2017-08-24 13:39:54
任何循环都必须包含在类成员中,如函数。您不能在类中直接编写循环。您的实际代码应该如下所示:
public class GradeBook{
float PassGrade = 70;
public void FunctionWithLoop(){
foreach(var grade in grades){
//Some code
}
}
}发布于 2017-08-24 13:41:15
你不能在没有函数的情况下在类定义中编写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,那么您的simple将无法调用它。
您需要记住c# it 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)
https://stackoverflow.com/questions/45853564
复制相似问题