黑马程序员---get和set属性的理解

 

一般面向对象编程语言都要求成员变量不能直接暴露给外部访问,如下:
public class A
    {  
       public int Age;   //这是不好的,待会有程序员可能把-1赋给Age
    }


为了防止乱赋值,C#设计了一个属性机制,要求把成员变量设为私有,在通过属性来控制成员变量的读写,如下:
public class B
    {   
        private int age;  //私有成员变量   
        public int Age    //age的属性   
                {       
                      get{ return age; }  //读取器      
                      set{                //写入器           
                            if(value>0)            
                            age = value;   //value是准备写入的值       
                          }   
                 }
     }
  这样Age就像保安一样,挡在age的前面。访问age的时候需要通过Age许可,如下:
  B b = new B();
  b.Age = -1;  //这是不行的,-1被带入value,value<0,判断不成立b.Age = 10;  //这是可行的

 

第一个类型的name属性未封装,其name属性直接通过public关键字暴露给系统中的其他类了,而第二个类型的name属性通过get set关键字进行了封装,get和set分别对应的是可读和可写,相当于如下代码:
private string name;
public string Name {
get { return name; }
set { name = value; }
}

get和set 是属性的访问器
我们可以理解为 get为 获得属性的值    读取属性的值
                              set为 设置属性的值   写入值给属性

 当只有get时,只有只读属性

 当只有set时,只有写入属性

 既有get和set时 ,包含了读写属性的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值