【问题标题】:Public readonly field v.s. get-only property公共只读字段与仅获取属性
【发布时间】:2017-02-23 15:36:40
【问题描述】:

在某些情况下,您会想要一个公共的只读字段而不是。仅获取自动实现的属性?

public class Foo
{
    public readonly string Hello;

    public string Hello2 { get; }
}

两者都只能在构造函数期间设置,并且都提供类外的只读访问。我有点累,所以我可能会遗漏一些东西。

【问题讨论】:

    标签: c# c#-6.0


    【解决方案1】:

    使其成为属性而不是字段意味着它可以在接口上使用。

    确切的实现(尽管自动属性实际上并没有太多实现......)也是抽象的,因此您将来可以将其基于字段组合而不会破坏(编译)兼容性。

    【讨论】:

    • 很好的例子,谢谢,我知道我在这里缺少一些明显的东西。我想知道的上下文是默认 asp.net 核心模板中的 Startup.cs,有趣的是 Startup 没有实现接口,但也许该属性在其他地方用作挂钩。
    • 我真的很想将你的和 PaulF 的答案标记为答案,因为他们都认为他的答案稍早一些,但如果可以的话,我也会标记你的答案!
    【解决方案2】:

    一个原因是数据绑定 - .net 实现绑定到属性而不是公共字段。

    这里有一些讨论:Why can't we use public fields for data binding in C#?

    【讨论】:

      猜你喜欢
      • 2011-03-24
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多