我有一个带有只读字段的类,该字段指示对象的状态。这些字段应该从外部可见。

首先,我使用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/

10-11 12:45
查看更多