黑马程序员技术交流社区
标题:
新建一个构造方法后,属性为什么不能对字段进行保护
[打印本页]
作者:
肖云
时间:
2012-5-31 19:01
标题:
新建一个构造方法后,属性为什么不能对字段进行保护
新建了一个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 = '男';
}
}
}
作者:
朱亮辉
时间:
2012-5-31 21:28
本帖最后由 朱亮辉 于 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);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2