c#—get,set访问器的作用

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的