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

时间:2016-06-28 13:21:27

标签: c#

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

3 个答案:

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