通常我会尝试尽可能多地使用自动属性。但是我经常需要在setter中做额外的东西,有时甚至在getter中。当我包含一个支持该属性的字段时,我总是困扰所有方法都可以访问支持字段,而不仅仅是属性。
诱惑很高,将来某个时候直接修改字段,绕过属性的封装。在C#中是否有任何方法可以强制该字段仅用于属性getter或setter?宣布它在属性本地的效果就像(我知道这不起作用):
class Foo
{
public string Name
{
string nameField; // how nice if a local decalaration was possible
get {/* probably something else to do here */ return nameField;}
set {/* probably something else to do here */ nameField = value;}
}
public void someStupidMethod()
{
nameField = "Donald"; // how nice if the compiler would throw up here
}
}