http://blog.sina.com.cn/s/blog_82526aa60100txtx.html
有字段为啥要有属性???
属性作用:
1.控制读和写的权限
get:读出
set:写入
2.对数据值进行安全检查
如果在一个类中有一个公有字段,那么在这个类的外部我们可以*无阻的使用这个字段,但是如果给这个字段赋了一个很“离谱”的值,那这对程序可能会造成很大的影响
比如:
Class Student
{
public int Age;
}
在这个类外我们写:
Student stu =new Student();
stu.Age = 1000;
众所周知,人目前是不可能活到1000岁的,但是这样赋值编译器又不会报错(假设外部没有限制Age取值的逻辑),但是我们知道这个程序运行后的结果是有错误的
所以我们有了“属性”这个东西,代码可以这样写:
class
Student
{
private
int
age;
public
int
Age
{
get
{
return
age; }
set
{
if
(value >= 0 && value <= 100)
{
age = value;
}
else
{
throw
new
Exception(
"Age value has error."
);
}
}
}
//属性对外:暴露数据,数据可以是存储在字段里的,也可以是动态计算出来的
//对内:保护字段不受“非法值”污染
//一般情况下,它们都用于表示实体(对象或类型)的状态
//属性大多数情况下是字段的包装器(wrapper)
//建议:永远使用属性(而不是字段)来暴露数据,即字段永远是private或protected的