我理解为什么要使用以下语法来使用只读属性:
private int _MyInt;
public int MyInt
{
get { return _MyInt; }
}
Run Code Online (Sandbox Code Playgroud)
这个例子可能不是最好的例子,因为我认为只读属性真的与readonly变量一起发光,但这不是重点.我不明白的是为什么使用以下语法使用只写属性:
private int _MyInt;
public int MyInt
{
set { _MyInt = value; }
}
Run Code Online (Sandbox Code Playgroud)
这是各种书籍和教程中描述只读属性的方式.如果设置了变量,你会在概念上阅读一些点,至少在内部的类,但该类中甚至在内部读它,你会被accesssing这样做_MyInt,我觉得违反了封装的精神,性质试图强制执行.相反,为什么不只是使用具有不同访问修改的属性的全部功能来访问它:
private int _MyInt;
public int MyInt
{
set { _MyInt = value; }
private get { return _MyInt; }
}
Run Code Online (Sandbox Code Playgroud)
当然可以写出来
public int MyInt { set; private get; }
Run Code Online (Sandbox Code Playgroud)
您仍然可以获得封装,但是限制其他类访问,因此它仍然只能写入外部类.
除非有一种情况,你真诚地希望分配给一个变量,但从未实际访问它,在这种情况下,我肯定会对何时出现这种需求感到好奇.