黑马程序员技术交流社区

标题: 为什么我按照苏老师的写法最后却显示未赋值? [打印本页]

作者: 郭佳佳    时间: 2012-9-19 21:57
标题: 为什么我按照苏老师的写法最后却显示未赋值?
class Student
    {
        string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        char sex;

        public char Sex
        {
            get { return sex; }
            set {

                if (value == '女' || value == '男')
                {
                sex= value;
                }
                else
                {
                    sex = '男';
                }
            }
        }
        int age;

        public int Age
        {
            get { return age; }
            set {
                age = value >= 0 ? value : 0;
            
            
            
            }
        }
        int chinese;

        public int Chinese
        {
            get { return chinese; }
            set {
                age = value >= 0 ? value : 0;
            }
        }
        int math;

        public int Math
        {
            get { return math; }
            set
            {
                age = value >= 0 ? value : 0;
            }
        }
        int english;

        public int English
        {
            get { return english; }
            set {
                age = value >= 0 ? value : 0;
            }
        }

        public void SayHello()
        {

            Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}同学",name ,age ,sex );
           

        }
        public void ShowScore()
        {
            int sum = chinese + english + math;
            int avg = sum / 3;
            Console.WriteLine("我叫{0},我的总成绩为{1},平均成绩为{2}",name,sum,avg);




class Program
    {
        static void Main(string[] args)
        {
            Student zsStudengt = new Student();
            zsStudengt.Name = "张三";
            zsStudengt .Sex ='男';
            zsStudengt.Age = 18;
            zsStudengt.Chinese = 90;
            zsStudengt.Math = 95;
            zsStudengt.English = 80;
            Student xlStudent = new Student();
            xlStudent.Name = "小兰";
            xlStudent.Sex = '女';
            xlStudent.Age = 16;
            xlStudent.Chinese = 95;
            xlStudent.Math = 85;
            xlStudent.English = 100;
            
            
            Console.WriteLine("下面是张三打招呼和显示成绩的方法");
            zsStudengt.SayHello();
            zsStudengt.ShowScore();
            Console.WriteLine("下面是小兰打招呼和显示成绩的方法");
            xlStudent.SayHello();
            xlStudent.ShowScore();
            Console.ReadKey();

为什么会显示:警告        1        从未对字段“属性习题.Student.chinese”赋值,字段将一直保持其默认值 0        d:\My Documents\Visual Studio 2008\Projects\入学考试练习\属性习题\Class1.cs        46        13        属性习题

作者: 康子龙    时间: 2012-9-19 22:15
你这肯定显示未赋值,但不影响程序运行。
你的chinese,math,english属性的访问器都是对age操作的。
作者: 郑本川    时间: 2012-9-19 22:44
这个好像不对吧。如果等于0的时候,怎么取值?
作者: 杨进    时间: 2012-9-19 23:12
本帖最后由 杨进 于 2012-9-19 23:54 编辑

int chinese;

        public int Chinese
        {
            get { return chinese; }
            set {
                age = value >= 0 ? value : 0;
            }
        }
其中age = value >= 0 ? value : 0;应该改成chinese = value >= 0 ? value : 0;
从age那拷贝代码过来后变量名要改。
english和math也一样。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2