【发布时间】:2010-11-06 06:01:29
【问题描述】:
我的项目包含大量具有属性的类,其支持字段被标记为只读,因为它们仅在构造时设置。就风格而言,我喜欢使用自动属性,因为它消除了许多样板代码并鼓励使用属性成员而不是支持字段。但是,当使用自动属性时,我失去了支持字段的“只读性”。我知道当以这种方式标记字段时,编译器/运行时能够利用一些性能增强功能,因此我希望能够将我的自动属性标记为只读,如下所示:
[ReadOnly]
public string LastName { get; }
而不是
private readonly string _LastName;
public string LastName
{
get
{
return _LastName;
}
}
是否已经有一些机制可以做到这一点?如果不是,那么从只读的自定义支持字段中获得的性能提升真的值得吗?
将字段公开是另一种选择,我想,以这种方式公开字段似乎是错误的。即
public readonly string LastName;
【问题讨论】:
-
我同意公开只读字段似乎是错误的。如果以后需要更改为属性,则更改会破坏兼容性。
-
正如答案正确指出的那样,不,现在没有办法做到这一点。这是一个经常被请求的特性,并且在假设的未来语言版本的可能新特性列表中绝对是高位的。我个人希望拥有一整套相关的特性来鼓励以不可变的风格进行编程;这只是其中之一。