C#教学第11讲属性1(学习笔记)

第11讲  属性1
视频讲师:陈广老师
  大家好,今天我们来讲一下C#中的属性。
  属性是类,结构和接口的命名成员。它们提供了通过访问器(accessor)读,写或计算私有字段值的灵活机制。
  属性是这样的成员:它们提供灵活的机制来读取,编写或计算私有字段的值。可以像使用公共数据成员一样使用属性,但实际上它们是称为“访问器”的特殊方法。这使得数据在可被轻松访问的同时,仍能提供方法的安全性和灵活性。
  下面我们用代码一步一步来说明为什么要使用属性。

  通过编译执行,屏幕上正常输出了预想的结果。大家自己动手运行下程序。这个程序乍看一下感觉没有什么问题,但是呢我们稍做一些修改,比如把zs.sex = "男";改成zs.sex = "牛";。运行代码结果肯定张三的性别成牛了...这个时候就不合逻辑了。现在大家可以明显的感觉到User类的封装非常不合理,存在着非常大的缺陷,那么该如何修改呢?这个时候大家马上会想到是不是可以专门声明一个方法给性别赋值呢,好!我们就来实现这个方法。SetSex这个方法乍一看还可以,但是不要忘记name和sex字段还是public属性,我们依然可以直接去调用它,或者说去修改它,一样可以把sex设为“牛”。给类的字段设置为public意味着破坏了类的封装,这样呢会存在潜在的危险。所以呢要设为private,这个时候就分别声明方法去读取和设置这2个字段,修改如下:

 

  大家执行编译下看下效果是没有问题的。现在这个类的设计就比较合理了,我们看name和sex它们是private字段,也就是说在类的外部是不能访问的,这样呢就保证了它的安全性。当用户想给性别字段添加非法字段的时候,SetSex方法内会对这个添加的值进行判断,如果不为男或女,值就不会被添加。
  这是大家可能会问了,讲了这么久为什么没有提到属性半个字呢?好,现在属性可以粉墨登场了~由于属性的存在,简化了SetSex跟Getsex,也就是读取和设置私有字段值的这么一个方法。好,我们再次修改代码,使用属性:

  执行代码,效果如下:

  屏幕上正常输出了结果。李四使用的是属性,并且对性别同样能进行判断。也就是说属性实现了同方法一样的功能,它简化了SetSex和GetSex的调用,我们看下属性的调用是和字段的调用一样的,直接用=进行赋值。  
  我们再仔细看下私有字段的命名和属性的命名只是大写小不同而已,这样的命名在C#中没有什么问题。但是如果你的工程中含有VB.NET代码,而那些代码要访问这个类,这样呢就会出现一些问题,因为VB.NET代码是大小写不敏感的,所以最好给私有字段改下名字,比如m_name,这样就更合乎规范了~
  好,这节课我们先讲到这里。

由快乐乔巴听课摘写笔记

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值