黑马程序员技术交流社区

标题: 关于属性中get/set时遇到的问题 [打印本页]

作者: 岳珅    时间: 2013-1-29 23:16
标题: 关于属性中get/set时遇到的问题
本帖最后由 岳珅 于 2013-1-29 23:48 编辑

为什么为什么,在类文件里,那个sex不是已经用if判断了么,小兰那里我输入的也是女,说明判断成立了,就把value的值赋给sex了啊,为什么一输出就说小兰是男的呢。。。
  1. /*定义一个学生类,有六个属性,分别为姓名、性别、年龄、语文、数学、英语成绩。
  2. 有2个方法:
  3. 一个打招呼的方法:介绍自己叫XX,今年几岁了。是男同学还是女同学。
  4. 两个计算自己总分数和平均分的方法。{显示:我叫XX,这次考试总成绩为X分,平均成绩为X分}
  5. 实化两个对象并测试:
  6. 张三 男 18  三科成绩为:90 95 80
  7. 小兰 女 16  三科成绩为:95 85 100*/
  8. namespace test6
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             Student zsStu = new Student();
  15.             Student xlStu = new Student();
  16.             zsStu.Sex = '男';
  17.             zsStu.Age=18;
  18.             zsStu.Name = "张三";
  19.             zsStu.Ch = 90;
  20.             zsStu.Eng = 95;
  21.             zsStu.Ma = 80;
  22.             xlStu.Sex ='女';
  23.             xlStu.Age = 16;
  24.             xlStu.Name = "小兰";
  25.             xlStu.Ch = 95;
  26.             xlStu.Eng = 85;
  27.             xlStu.Ma = 100;
  28.             zsStu.SayHi();
  29.             xlStu.SayHi();
  30.             zsStu.Score();
  31.             xlStu.Score();
  32.             Console.ReadKey();
  33.         }
  34.     }
  35. }
复制代码
上面的是主函数,下面的是类。
  1. namespace test6
  2. {
  3.     class Student
  4.     {
  5.         private string name;
  6.         public string Name
  7.         {
  8.             get { return name; }
  9.             set
  10.             {
  11.                 if (name == "黑马老师")
  12.                     name = "好老师";
  13.                 else
  14.                     name = value;
  15.             }
  16.         }
  17.         private char sex;
  18.         public char Sex
  19.         {
  20.             get { return sex; }
  21.             set
  22.             {
  23.                 if (sex == '男' || sex == '女')
  24.                 {
  25.                     sex = value;
  26.                 }
  27.                 else
  28.                 {
  29.                     sex = '男';
  30.                 }
  31.             }
  32.         }
  33.         private int age;
  34.         public int Age
  35.         {
  36.             get { return age; }
  37.             set
  38.             {
  39.                 age = value >= 0 ? value : 0;
  40.             }
  41.         }
  42.         private int ch;
  43.         public int Ch
  44.         {
  45.             get { return ch; }
  46.             set
  47.             {
  48.                 ch = value >= 0 ? value : 0;
  49.             }
  50.         }
  51.         private int ma;
  52.         public int Ma
  53.         {
  54.             get { return ma; }
  55.             set
  56.             {
  57.                 ma = value >= 0 ? value : 0;
  58.             }
  59.         }
  60.         private int eng;
  61.         public int Eng
  62.         {
  63.             get { return eng; }
  64.             set
  65.             {
  66.                 eng = value >= 0 ? value : 0;
  67.             }
  68.         }
  69.         public void SayHi()
  70.         {
  71.             Console.WriteLine("你好,我叫{0},我今年{1}岁了,我是{2}生。",name,age,sex);
  72.         }
  73.         public void Score()
  74.         {
  75.             Console.WriteLine("你好,我叫{0},我的总成绩是{1},平均成绩是{2}。",name,ch+ma+eng,(ch+ma+eng)/3);
  76.         }
  77.     }
  78. }
复制代码



作者: 彭清贵    时间: 2013-1-29 23:48
你应该把‘男’赋给value,而不是sex
作者: 岳珅    时间: 2013-1-29 23:48
好了- -解决了。。。
if (sex == '男' || sex == '女')
这里不应该是sex而是value。。。
脑袋发热了。。。




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