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