A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

   新建了一个Student构造方法后,在实例化时传入的性别,Sex属性不能对sex字段起保护作用,为什么呢?
class Student
    {
        public Student(char sex)
        {
            this.sex = sex;   
        }
        char sex;

        public char Sex
        {
            get { return sex; }
            set
            {
                if (value == '男' || value == '女')
                {
                    sex = value;
                }
                else
                {
                    sex = '男';
                }
            }
        }

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

1 个回复

倒序浏览
本帖最后由 朱亮辉 于 2012-5-31 23:40 编辑

你的代码明显的有问题的,呵呵,不过比我刚开始写的好啊,我直接给写成了死循环。你的代码我给你改了一下,你自己试着运行一下
class Student
    {
        public Student(char sex)
        {
            Sex = sex;
        }
        public char sex;

        public char Sex
        {
            get { return sex; }
            set
            {
                if (value == '男' || value == '女')
                {
                    sex = value;
                }
                else
                {
                    sex = '男';
                }
            }
        }
    }

其实属性就是一个特殊的方法,可以设置值也可以返回值,初始化的时候应该将值赋值给属性,属性内部进行判断,get取值的时候只是将set赋值的时候做判断之后的值返回给了属性本身,你看看下面的代码,跟你使用属性的运行结果是一样的,你感觉有多大的区别,还有就是你感觉用方法判断字段数据好,还是方法好

    class Student
    {
        public Student(char sex)
        {
            Sex(sex);
        }
        public char sex;

        public void Sex(char sex)
        {
            if (sex == '男' || sex == '女')
            {
                this.sex = sex;
            }
            else
            {
                this.sex = '男';
            }
        }
    }
----------------------访问代码------------------------------
Student s = new Student('女');Console.WriteLine(s.sex);







评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马