Cpt*_*rkt 33 c# encapsulation field properties
我理解PROPERTIES优于FIELDS的优点,但我觉得使用自动实现的属性优于MANUAL实现的属性并不能提供任何其他优势,除了使代码更简洁一些.
我觉得使用起来更舒服:
private string _postalCode;
public string PostalCode
{
get { return _postalCode; }
set { _postalCode = value; }
}
Run Code Online (Sandbox Code Playgroud)
代替:
public string PostalCode { get; set; }
Run Code Online (Sandbox Code Playgroud)
主要是因为如果我想做任何类型的get和set的自定义实现,我必须创建自己的属性,无论如何由私有字段支持.那么为什么不从头开始咬住子弹并立即给予所有属性这种灵活性,以保持一致性?考虑到您在Visual Studio中所做的一切都是单击您的私有字段名称,然后按Ctrl + E,这真的不需要额外的一秒,而且您已经完成了.如果我手动完成,那么我最终会出现不一致的情况,其中有一些手动创建的公共属性由私有字段和一些自动实现的属性支持.随着它的一致性,我感觉好多了,无论是全自动还是全手动.
这只是我吗?我错过了什么吗?我错了什么?我是否过分强调一致性?我总能找到关于C#功能的合理讨论,并且几乎总有优点和缺点,但在这种情况下,我真的找不到任何建议不使用自动实现属性的人.
Rya*_*ger 37
除了简洁之外,它不会给你任何额外的东西.如果您更喜欢更详细的语法,那么请务必使用它.
使用自动道具的一个好处是,它可以避免造成愚蠢的编码错误,例如意外地将错误的私有变量分配给属性.相信我,我以前做过!
你对汽车道具不是很灵活的观点是一个很好的观点.您拥有的唯一灵活性是使用private get或private set限制范围.如果你的吸气剂或安装者有任何复杂性,那么汽车道具不再是一个可行的选择.
不保证自动实现的属性在构建之间保持相同的支持字段名称.因此,理论上可以在一个版本的程序集中序列化一个对象,然后在另一个程序集中重新序列化该相同的对象可能会导致重大更改.
这是极不可能的,但如果您试图保持为更新版本"换出"程序集版本的能力,那么这是一个有效的问题.
通过使用手动实现的属性,可以保证后备字段永远不会更改(除非您专门更改它).
除了那个微小的差异之外,自动属性是一个普通的属性,它通过支持字段自动实现.
| 归档时间: |
|
| 查看次数: |
17514 次 |
| 最近记录: |