【问题标题】:Auto-implemented get/set properties自动实现的获取/设置属性
【发布时间】:2011-08-12 07:52:08
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 不是真正的问题。如果您发现需要某些功能或其他功能,您可以稍后轻松地将自动属性转换为手动属性。这不是一个重大变化。

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


【解决方案1】:

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

您也不能使用自动属性将属性添加到支持字段

没有字段初始化器。

没有真正的readonly 用于不变性。

显然,你不能添加逻辑;没有惰性、验证、副作用或通知事件。

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

否则:它们很棒。我是一个忠实的粉丝。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-06
        • 2016-01-28
        • 1970-01-01
        • 2015-02-27
        • 1970-01-01
        • 1970-01-01
        • 2012-12-30
        • 1970-01-01
        相关资源
        最近更新 更多