我有两个类,我已经能够在另一个类中实例化一个类,但是当我尝试使用实例化的类时,我得到一个错误。我不能使用实例化的类和VS甚至报告实例化的类不存在。请问为什么?
public class GradeBook
{
public GradeBook()
{
gradesList = new List<float>();
}
public void AddGrades(float grades)
{
gradesList.Add(grades);
}
List<float> gradesList;
public List<float> GradesList
{
get
{
return gradesList;
}
set
{
gradesList = value;
}
}
}
public class GradeStatistics
{
GradeBook aveg = new GradeBook();
//This is where the error occurs
aveg.GradesList;
}
答案 0 :(得分:3)
类不能包含代码,除非它在方法,属性等中。创建实例并访问其属性的代码不是。在类中创建一个包含代码的新方法。此外:你应该对属性中的值做一些事情:
public class GradeStatistics
{
public void MyMethod()
{
GradeBook aveg = new GradeBook();
var result = aveg.GradesList;
}
}
答案 1 :(得分:0)
首先
您可以只使用List对象的属性和您的方法
添加项目将会过时,因为List
有自己的方法来添加项目。
public class GradeBook
{
// Property of type List (short version)
public List<float> GradesList {get; set;}
public GradeBook()
{
GradesList = new List<float>();
}
}
正如评论中已经提到的那样,你需要在构造函数中使用GradeBook
对象或像
public class GradeStatistics
{
// constructor
public GradeStatistics()
{
GradeBook aveg = new GradeBook();
//This will stop the error to occur
//
aveg.GradesList.Add(0.65f);
}
}
或者您在新类中创建了一个属性
public class GradeStatistics
{
public GradeBook aveg {get; set;}
// constructor
public GradeStatistics()
{
// from now on you can use it also in methods
aveg = new GradeBook();
}
public void clearForeignList()
{
this.aveg.GradesList.Clear();
}
}
答案 2 :(得分:0)
再次检查您的代码并查看@ martin-mulder的答案。这是一个完美的代码:
public class GradeBook
{
public GradeBook()
{
gradesList = new List<float>();
}
public void AddGrades(float grades)
{
gradesList.Add(grades);
}
List<float> gradesList;
public List<float> GradesList
{
get
{
return gradesList;
}
set
{
gradesList = value;
}
}
}
public class GradeStatistics
{
public void MyMethod()
{
GradeBook aveg = new GradeBook();
var x = aveg.GradesList;
}
}