C# 可以实例化一个类,但不能使用它
我有两个类,我能够在另一个类中实例化一个类,但是当我尝试使用实例化的类时,我会得到一个错误。我不能使用实例化的类,甚至不能报告实例化的类不存在。请问这是为什么C# 可以实例化一个类,但不能使用它,c#,C#,我有两个类,我能够在另一个类中实例化一个类,但是当我尝试使用实例化的类时,我会得到一个错误。我不能使用实例化的类,甚至不能报告实例化的类不存在。请问这是为什么 public class GradeBook { public GradeBook() { gradesList = new List<float>(); } public void AddGrades(float grades) { gradesLis
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;
}
公共班级成绩册
{
公开成绩册()
{
gradesList=新列表();
}
公共交通等级(浮动等级)
{
成绩列表。添加(成绩);
}
列出成绩表;
公开名单成绩表
{
收到
{
返回成绩表;
}
设置
{
等级列表=价值;
}
}
}
公营班级成绩统计
{
成绩册aveg=新成绩册();
//这就是错误发生的地方
等级表;
}
类不能包含代码,除非它位于方法、属性等中。创建实例并访问其属性的代码不是。在类中创建一个包含代码的新方法。此外:您应该使用属性中的值执行以下操作:
public class GradeStatistics
{
public void MyMethod()
{
GradeBook aveg = new GradeBook();
var result = aveg.GradesList;
}
}
首先
您可以只使用List对象的属性和方法来
添加项目将过时,因为列表
有自己的添加项目的方法
public class GradeBook
{
// Property of type List (short version)
public List<float> GradesList {get; set;}
public GradeBook()
{
GradesList = new List<float>();
}
}
或者也可以在新类中创建属性
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();
}
}
再次检查代码并查看@martin mulder答案。下面是一个完美的wokring代码:
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;
}
}
公共班级成绩册
{
公开成绩册()
{
gradesList=新列表();
}
公共交通等级(浮动等级)
{
成绩列表。添加(成绩);
}
列出成绩表;
公开名单成绩表
{
收到
{
返回成绩表;
}
设置
{
等级列表=价值;
}
}
}
公营班级成绩统计
{
公共方法()
{
成绩册aveg=新成绩册();
var x=平均等级列表;
}
}
此行aveg.GradesList代码>无效。应该类似于var myGradeList=aveg.GradesList代码>您的代码位于类的主体中,而不是方法或属性的主体中。@mparnisari这也不符合要求,因为它不在方法主体中。您好,欢迎使用Stackoverflow。对于您遇到的任何特定问题,请包括一个。请同时阅读。最后,如果您有错误,请始终发布该错误的详细信息。如果您有运行时异常,情况也是如此。@juharr:但即使在方法或属性中,如果不将aveg.GradesList
赋值给变量或对其执行其他操作,它也将无效。GradesList
也不编译,GradesList
不是一个方法而是一个属性,如果您访问getter,您必须对它执行一些操作。现在编辑它compile@AlexTurcan:如果没有var result=
您将得到“只能将赋值、调用、递增、递减、等待表达式和新对象表达式用作语句”
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;
}
}