公共只读字段v.s. get-only属性

时间:2016-10-14 09:04:34

标签: c# c#-6.0

是否有需要公共只读字段的情况。一个只有自动实现的属性?

public class Foo
{
    public readonly string Hello;

    public string Hello2 { get; }
}

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

2 个答案:

答案 0 :(得分:19)

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

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

答案 1 :(得分:7)

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

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