繁体   English   中英

初始化对象后对方法的nullreference

[英]nullreference on a method after initializing an object

我是C#的新手,我只想使用该语言。

我有三个班级,分别是学生,课程和年级。 我只是似乎不明白为什么它总是获得空值。

class Student
{
    Name name;
    Course course;

    public Student(Course course)
    {
        this.course = course;
    }

    public Course C
    {
        get { return course; }
        set { course = value; }
    }

}

class Course
{
    string name;
    string code;
    int units;
    Grade grade; // this one warns as 'Course.grade' is never assigned to, and will always have its default value null

    public Course(string name, string code)
    {
        this.name = name;
        this.code = code;
    }

    public void DisplayDetails()
    {
        Console.WriteLine("Course: {0}({1})", code, name);
    }

    public int U
    {
        get { return units; }
        set { units = value; }
    }

    public Grade G
    {
        get { return grade; }
        set { value = grade; }
    }
}

class Grade
{
    double q;
    double o;
    double fe;
    double fg;

    public Grade(double q, double o, double fe)
    {
        this.q = q;
        this.o = o;
        this.fe = fe;
    }

    public void ComputeGrade()
    {
        fg = q * .5 + o * .2 + fe * .3;
    }

    public double C
    {
        get { return fg; }
        set { value = fg; }
    }

}

这是我的主要课程。

class Program
{
    static void Main(string[] args)
    {
        Student s = new Student(new Course("Something", "1234"));
        s.C.U = 3;
        s.N = new Name("John", "Snow");
        Grade grade = new Grade(90.0, 90.0, 90.0); // I have initialized an object here


        s.C.G.ComputeGrade(); //but this gets a null value

        s.N.Display2();
        s.C.DisplayDetails();
        Console.WriteLine(" - {0} units", s.C.U);
        Console.WriteLine(" Grade: {0}", s.C.G.C); //as well as this
        Console.ReadKey();

    }
}

我相信已经为Grade类的对象设置了值。 我也已经宣布它是吸气剂/吸气剂。 我在代码上做错了还是缺少代码?

Course正确的G setter:

public Grade G
{
    get { return grade; }
    set { grade = value; }
}

并在使用Fabio之前建议设置G值:

s.C.G = new Grade(90.0, 90.0, 90.0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM