是否有需要公共只读字段的情况。一个只有自动实现的属性?
public class Foo
{
public readonly string Hello;
public string Hello2 { get; }
}
两者都只能在构造函数中设置,并且都提供了类外的只读访问权限。我有点累,所以我可能会遗漏一些东西。
答案 0 :(得分:19)
使它成为属性而不是字段意味着它可以在接口上使用。
确切的实现(尽管自动属性实际上没有多少实现......)也是抽象的,因此您将来可以将它基于字段组合,而不会破坏(编译)兼容性。
答案 1 :(得分:7)
一个原因是数据绑定 - .net实现绑定到属性而不是公共字段。
这里有一些讨论:Why can't we use public fields for data binding in C#?