readonly class不是真的只读

时间:2015-09-29 11:07:50

标签: c# .net class

我的简单类定义如下:

public class class1 { public int a; }

private class1 _myclass;
//define a public readonly class
public class1 myclass {
  get { return _myclass; }
  //set { _myclass = value; }
}

并且在我的代码中不接受以下行:

myclass = new myclass(); //class is read only

但是我仍然可以写下以下内容:

myclass.a = 2; //i can edit readonly class element

我想阻止这种情况,并使我的只读类的元素不可用。

编辑:我忘了提到我仍然想以这种方式访问​​它:

_myclass.a = 2; //passing from private class is intended purpose

2 个答案:

答案 0 :(得分:3)

Readonly只会阻止你替换myclass引用,你仍然可以调用变量本身的方法。如果你想让MyClass不可修改,我推荐一个只有.a的getter的接口,然后把它传递给使用myclass的人而不是对类本身的完整引用。

答案 1 :(得分:0)

您可以更好地创建界面,而不是创建只读类。您可以从界面返回值类型和不可变对象。您可以尝试创建只读接口,然后您的类型可以实现它。因此,您可以将带有接口的类型传递给只执行读取的代码。