为了账号安全,请及时绑定邮箱和手机立即绑定

公共字段与自动属性

公共字段与自动属性

C#
慕盖茨4494581 2019-06-15 12:59:15
公共字段与自动属性我们经常被告知应该通过为类字段创建getter和setter方法(在C#中的属性)来保护封装,而不是将字段暴露给外部世界。但是,有很多时候,一个字段只是保存一个值,而不需要任何计算来获得或设置。对于这些人,我们都会做这个数字:public class Book{     private string _title;     public string Title     {           get{ return _title;  }           set{ _title = value; }     }}嗯,我有个供词,我不能忍受写所有这些(真的,它不必写,它必须要看它),所以我变得流氓和使用公共领域。接下来是C#3.0,我看到他们添加了自动属性:public class Book{     public string Title {get; set;} }哪个更整洁,我很感激,但真的,有什么比公开的领域有什么不同呢?public class Book{     public string Title;}

3 回答

?
MM们

TA贡献1886条经验 获得超2个赞

忽略API问题,我发现使用属性最有价值的是调试。

CLR调试器不支持数据断点(大多数本机调试器都支持)。因此,不可能在类上特定字段的读或写上设置断点。在某些调试场景中,这是非常有限的。

由于属性是作为非常瘦的方法实现的,因此可以在其值的读和写上设置断点。这使他们在田野上有了很大的优势。


查看完整回答
反对 回复 2019-06-15
?
大话西游666

TA贡献1817条经验 获得超14个赞

从字段更改到属性会破坏契约(例如,需要重新编译所有引用代码)。因此,当您有一个与其他类的交互点-任何公共(且通常是受保护的)成员-时,您希望为未来的增长做计划。通过始终使用属性来做到这一点。

今天把它变成一个自动属性是没有意义的,三个月后,你会意识到你想让它变懒,并在getter中放置一个空检查。如果您使用了某个字段,这是一个最好的重新编译更改,在最坏的情况下是不可能的,这取决于谁&还有什么依赖于您的程序集。


查看完整回答
反对 回复 2019-06-15

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号