我有一个带有只读字段的类,该字段指示对象的状态。这些字段应该从外部可见。
首先,我使用properties
显示了这些字段,如下所示:
public class MyClass
{
private readonly MyState mystate = new MyState();
public MyState MyState { get { return this.mystate; } }
}
但是因为这是
readonly
,所以我的类(class)的用户无法更改状态的实例。因此,我删除了property
,将readonly
字段设置为public
并在Pascal Case中将其重命名。到目前为止,我看到的唯一问题是重构,但是由于
public property
是像public readonly
这样的驼峰式案例,因此我可以将其无缝移动到property
中。Jimmy可以弄乱我的对象(无需修改代码)吗?还是使用
property
更加安全吗? 最佳答案
没有理由不使其成为属性(property);这是没有道理的。 CLI通常会在这种简单的属性上内联“获取”。当然,这是额外的一行代码。
严格来说,在字段和属性之间进行更改是一个巨大的变化。除了是不同的IL操作之外,它还具有不同的语义,尤其是在涉及结构的情况下。
使其成为属性,可以在以后进行更改时为您提供最大的灵活性;延迟加载,间接加载等
关于安全性:实际上,一个只读字段与一个仅获取属性大致相似。如果有人足够想做的话,这两种思考同样会被反射(reflection)所滥用。我的投票仍然是对公共(public)属性(property)的:)
关于c# - 只读字段可以公开吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11593122/