namespace learning
{
class Gradebook
{
public Gradebook()
{
grades = new List<float>();
}
public void AddGrade(float grade)
{
grades.Add(grade);
}
public Gradestatistic compute_statistics()
{
Gradestatistic stats = new Gradestatistic();
float sum = 0f;
foreach (float grade in grades)
{
sum = sum + grade;
}
stats.average_grade = sum / grades.Count;
return stats;
}
List<float> grades;
}
}
我分别使用两个自定义类Gradebook和Gradestatistic,我的class gradestatistic对象是 stats ,average_grade是class gradestatistic的成员,当我构建这个程序时它显示错误 stats .average_grade = sum / grades.Count; ,无法隐式将float类型转换为learning.gradestatistic 。 学习是我的项目名称。 等级统计类的代码是
class Gradestatistic
{
public Gradestatistic highest_grade;
public Gradestatistic lowestgrade;
public Gradestatistic average_grade;
}
我的program.cs代码是
class Program
{
static void Main(string[] args)
{
Gradebook book = new Gradebook();
book.AddGrade(91);
book.AddGrade(89.9f);
Gradestatistic stats = book.compute_statistics();
}
}
答案 0 :(得分:0)
代码无法编译,因为您尝试将类型float
的值分配给类型为Gradestatistic
的字段。 C#是一种类型安全的语言,这意味着您不能将一种类型分配给另一种类型,除非从一种类型转换为另一种类型。
查看您的代码时,您的Gradestatistic
字段应该是float
类型的字段,而不是Gradestatistic
。将它们更改为浮动将解决问题:
class Gradestatistic
{
public float highest_grade;
public float lowestgrade;
public float average_grade;
}
虽然这可以解决您的问题,但是公开类似的类字段被认为是一种糟糕的编程习惯。您可以在以下问题中阅读更多内容:
您应该首选automatic properties公共字段。
答案 1 :(得分:0)
您应该将Gradestatistic类更改为:
class Gradestatistic
{
public float highest_grade { get; set; }
public float lowestgrade { get; set; }
public float average_grade { get; set; }
}