c#语言的字段和属性的区别……

忽然间想起c#中字段和属性有什么区别,百度一下,有人说字段和属性差不多,结果参考了一下苏坤老师讲的c#,才明白,原来在c#中字段和属性真的不是一个概念!

1)很多人会说,类中不就是包括属性还有方法吗,这个字段是个什么东西?别急,上程序一看……



大家说Person这个类中的姓名和年龄是叫字段呢还是叫属性呢,可能很多人就觉得应该叫属性。其实是错了。c#中规定,name和age叫字段,而不叫属性。为什么这样呢?试看上面的程序,p.age = -10;我们将一个人的年龄赋个负数,OK,编译会出错吗?不会!为什么?因为Person类的age完全暴露给我们,我们在main()方法中想赋什么样的值都行……极为不合理,也不安全!所以c#规定name和age是字段。

2)何为属性?

c#中属性的引起,其实就是为了保护“不安全”的字段的,比如上面Person类的字段age,如果将age的访问修饰级别改为private,从main()方法中就无法对age进行访问,这样就保证了age不能被随意的修改。此时引入属性Age,访问修饰级别为public,包含两个方法---get和set方法。通过get和set方法,对private类型的age进行访问,并在set方法中可以对main()中赋的值进行判断后再赋值。这样通过属性Age使字段age的赋值结果更符合我们程序员的要求。上图说明一下……



此时在main()中通过对人类的属性Age赋值,就可控制我们随意对年龄赋的值,这样使字段age的结果更符合事实 ……

(注意:在main()方法中,如果p.Age = 18;此时会调用属性Age中的set方法,并且值18会自动赋给value,然后在 属性Age的set方法中做出判断,再给字段age赋值!)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值