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;
        }
}