自动实现的获取/设置属性

| 让C#创建使用自动属性创建(即{get; set})生成的私有后备字段有什么弊端? 我知道它是自动的,因此您不能自定义get / set,并且想知道是否还有其他含义。 谢谢!     
已邀请:
如果您使用的是“ 0”,由于字段名称对BF至关重要,因此更改为(或从中)自动实现的属性是一项重大更改。当然,有一个简单的解决方法:不要使用BF! 您也不能使用自动属性将属性添加到后备字段。 没有字段初始化程序。 没有真正的
readonly
可与不变性一起使用。 显然,您无法添加逻辑;没有懒惰,验证,副作用或通知事件。 对于结构体,您需要在自定义构造函数上调用
:this()
,这很丑陋。 否则:它们很棒。我是忠实粉丝。     
我遇到的最大问题是,在查看绑定方案时,它通常非常局限。通常,在使用数据绑定时,您需要实现INotifyPropertyChanged,该属性不受自动属性的支持。     
最大的问题是您不能使用后备字段,因为它们是由编译器创建的。这意味着您不能将它们声明为const或只读,这意味着您无法在访问它们的周围添加逻辑(例如,延迟初始化)等。好消息是,从自动属性开始,就可以重构为使用当您有理由时,后场很容易。     

要回复问题请先登录注册