回 帖 发 新 帖 刷新版面

主题:帮我看一个简单的代码

using System;
public class Student
{
    public int StudID;
    private string StudName;
    public string StudSex;
    public int StudAge;
    public double StudMath;
    public double StudEnglish;
    public double Totle;

    public double studmath
    {
        get { return StudMath; }
        set { StudMath = value; }
    }
    public string studname
    {
        get { return StudName; }
        set { StudName = value; }
    }
    public double totle
    {
        get { return Totle; }
        set { Totle = (StudEnglish + StudMath); }

    }
    
    public Student()
    { }
    public Student(int id, string name, string sex, int age, double math, double english)
    {
        StudID = id;
        StudName = name;
        StudSex = sex;
        StudAge = age;
        StudMath = math;
        StudEnglish = english;
    }
  
}
public class Test
{
    public static void Main(string[] args)
    {
        Student astudent = new Student(05094049, "caogongpu", "男", 22, 80.0, 80.0);
        Console.WriteLine(astudent.StudID);
        Console.WriteLine(astudent.studname);
        Console.WriteLine(astudent.StudMath);
        Console.WriteLine(astudent.StudEnglish);
        Console.WriteLine(astudent.totle);
        astudent.studname="liuwei";
        astudent.studmath=90;
        Console.WriteLine(astudent.studname+""+astudent.studmath);
        Console.WriteLine(astudent.totle);
        Console.Read();
    }
}

调用astudent的totle属性,执行结构总是0,应该是StudMath+StudEnglish的和呀

回复列表 (共9个回复)

沙发

看清执行顺序
只有在设置totle属性的时候,字段才被赋值,否则一直是默认值0

板凳

都是public字段了,用取值赋值访问器有什么用?

3 楼

先改为私有的再调用方法``~

4 楼

呵呵,,嘿嘿

5 楼

和C++好相似,当初我期末考试交上去就是LZ那样的,不过比他还要复杂一点,
在里面用到了类之间的联系。
加油。

6 楼

代码中并没有对属性total设置值呢,

7 楼


我不懂的是都是public了为什么还用get、set访问器呢?

8 楼


那是从变量上面封装而来的

9 楼


记得没错的话,C#里面好象有大小写区分,你的访问就有问题.
用条赋值语句应该可以了,astudent.studentTotal=astudent.studentEnglish+astudent.studentMath;
console.write("");
console.read();// 这条语句可以让你运行后看到结果,如果不用的话,结果会很快消失,基本上是看不到运行结果的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册