可以实例化一个类,但不能使用它

本文关键字:但不能 一个 实例化 | 更新日期: 2023-09-27 17:52:16

我有两个类,我已经能够在另一个类中实例化一个类,但是当我试图使用实例化的类时,我得到一个错误。我不能使用实例化类和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; 
}

可以实例化一个类,但不能使用它

类不能包含代码,除非它在方法、属性等中。而创建实例并访问其属性的代码则不是。在包含代码的类中创建一个新方法。此外:你应该对属性

中的值做些什么:
public class GradeStatistics
{
    public void MyMethod()
    {
        GradeBook aveg = new GradeBook();
        var result = aveg.GradesList; 
    }
 }

第一您可以只使用List对象的属性和方法add items将被淘汰,因为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();
    }
}

再次检查您的代码并查看@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;
        }
}
相关文章: