【发布时间】:2017-02-23 15:36:40
【问题描述】:
在某些情况下,您会想要一个公共的只读字段而不是。仅获取自动实现的属性?
public class Foo
{
public readonly string Hello;
public string Hello2 { get; }
}
两者都只能在构造函数期间设置,并且都提供类外的只读访问。我有点累,所以我可能会遗漏一些东西。
【问题讨论】:
在某些情况下,您会想要一个公共的只读字段而不是。仅获取自动实现的属性?
public class Foo
{
public readonly string Hello;
public string Hello2 { get; }
}
两者都只能在构造函数期间设置,并且都提供类外的只读访问。我有点累,所以我可能会遗漏一些东西。
【问题讨论】:
使其成为属性而不是字段意味着它可以在接口上使用。
确切的实现(尽管自动属性实际上并没有太多实现......)也是抽象的,因此您将来可以将其基于字段组合而不会破坏(编译)兼容性。
【讨论】:
一个原因是数据绑定 - .net 实现绑定到属性而不是公共字段。
这里有一些讨论:Why can't we use public fields for data binding in C#?
【讨论】: