一尘不染

有什么理由要使用自动实现的属性而不是手动实现的属性?

c#

我了解PROPERTIES相对于FIELDS的优点,但是我觉得使用AUTO实施的特性而不是MANUAL的实现特性除了提供使代码更加简洁的外观外,并没有提供任何优势。

我觉得使用起来要舒服得多:

    private string _postalCode;

    public string PostalCode
    {
        get { return _postalCode; }
        set { _postalCode = value; }
    }

代替:

public string PostalCode { get; set; }

主要是因为如果我想进行get和set的任何自定义实现,则无论如何我都必须创建自己的属性并以私有字段为后盾。那么,为什么不从一开始就硬着头皮为所有属性赋予这种灵活性以保持一致性呢?考虑到您在Visual
Studio中要做的所有事情,只需单击您的私有字段名称,然后按Ctrl +
E,就可以了。而且,如果我手动执行此操作,那么最终会出现不一致之处,即存在一些由私有字段支持的手动创建的公共属性,以及一些自动实现的属性。无论是自动还是全手动,它在所有方面都保持一致的感觉要好得多。

这就是我吗
我想念什么吗?我误会了什么吗?我是否过于强调一致性?我总是可以找到有关C#功能的合法讨论,并且几乎所有内容都各有利弊,但是在这种情况下,我真的找不到建议使用自动实现属性的人。


阅读 342

收藏
2020-05-19

共1个答案

一尘不染

除了简洁之外,它不会给您任何额外的好处。如果您喜欢更冗长的语法,则一定要使用它。

使用自动道具的一个优点是,它可以潜在地使您免于犯傻的编码错误,例如不小心将错误的私有变量分配给属性。相信我,我以前做过!

关于自动道具不是很灵活的观点很不错。您拥有的唯一灵活性是使用private getprivate set限制范围。如果您的getter或setter对其有任何复杂性,那么自动道具将不再是可行的选择。

2020-05-19