【问题标题】:Alternative to private setters in Automatic properties替代自动属性中的私有设置器
【发布时间】:2013-01-11 03:03:51
【问题描述】:

如果您不应该对自动属性使用私有设置器(不好的做法),那么我怎样才能从类中私下设置它,并且仍然只需要公开就可以公开它? (假设我想在构造函数级别设置它,但仍然允许它通过 get 公开)?

示例类:

public class Car
{
    //set the property via constructor
    public SomeClass(LicensePlate license)
    {
         License = license
    }

    public LicensePlate License{get; private set;} // bad practice
}

【问题讨论】:

  • 您能举出您听说私有 setter 对自动属性不利的地方吗?第一次听说。
  • 我知道私人或其他不可访问/丢失get 是不好的做法,但我不知道为什么private set 会不好。

标签: c# .net oop


【解决方案1】:

您将属性转换为具有支持字段且没有设置器的属性。

public class Car
{
    LicensePlate _license;

    public Car(LicensePlate license)
    {
        _license = license;
    }

    public LicensePlate License
    {
        get { return _license; }
    }
}

【讨论】:

  • 我不想使用旧样式:)。为什么一开始就私下设置 setter 甚至是不好的做法?
  • @CoffeeAddict 不是。你能告诉我你为什么这么认为吗?让我更喜欢没有 setter 和支持字段的属性的唯一原因是 VS 中的 Intellisense 对前者没有与后者不同的图标——所以你可能不知道,只看图标,如果自动属性具有公共 setter/getter。
猜你喜欢
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
  • 2016-08-24
  • 2013-06-25
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多