属性和public 字段的区别是什么?调用 set 方法为一个属性设值,然后用 get 方法读取出来的值一定是 set 进去的值吗?

本文探讨了属性和公共字段在编程中的不同,属性提供了额外的控制,如防止非法值,而字段则不具备此功能。虽然通常get方法返回的是set方法设置的值,但可以通过特殊实现使get返回不同的值。此外,属性在底层实际上是set_***和get_***方法的封装。示例代码展示了即使设置了值,通过属性获取时值并未改变的情况。
摘要由CSDN通过智能技术生成

58.属性和public 字段的区别是什么?调用 set 方法为一个属性设值,然后用 get 方法读取出来的值一定是 set 进去的值吗?
a.属性可以对设值、取值的过程进行非法值控制,比如年龄禁止设值负数,而字段则不能进行这样的设置
b.虽然 一般情况下 get 读取的值就是 set 设置的值,但是可以让 get 读取的值不是 set 设置的值的。极端的例子。Public Age{get{return100;}set{}}
c.扩展::用 reflector 反编译可以看出,属性内部本质上就是 set_***、get_*** 方法
class Person
{
public int Age{ get{return 3;}set{} }
}
Person p1=new Person();
P1.Age=30;
P1.Age++;
Console.Write(p1.Age);//输出3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值