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

时间:2011-04-25 13:11:05

标签: c# .net properties accessor automatic-properties

让C#创建使用自动属性创建生成的私有支持字段(即{get; set})是否有任何缺点?

我知道它是自动的,因此您无法自定义get / set,并且想知道是否还有其他含义。

谢谢!

3 个答案:

答案 0 :(得分:6)

我遇到的最大问题是,在查看绑定方案时,它通常非常有限。通常,在使用数据绑定时,您需要实现自动属性不支持的INotifyPropertyChanged

答案 1 :(得分:4)

如果您使用BinaryFormatter,更改为(或来自)自动实现的属性是一个重大变化,因为字段名称对BF很重要。当然,一个简单的解决方法是:不要使用BF!

您也无法使用自动属性向支持字段添加属性。

没有字段初始化。

用于不变性的真实readonly

显然你无法添加逻辑;没有懒惰,验证,副作用或通知事件。

使用结构体,您需要在自定义构造函数上调用:this(),这很难看。

否则:他们很棒。我是个粉丝。

答案 2 :(得分:2)

最大的问题是您无法使用支持字段,因为它们是由编译器创建的。这意味着您不能将它们声明为const或readonly,这意味着您无法在访问它们时添加逻辑(例如,延迟初始化)等。好消息是从autoproperty开始使重构使用支持字段当你有理由时很容易。