当前位置:首页 > windos > 正文

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的