是否有可能以某种方式声明某个字段属于其属性

时间:2018-03-07 10:06:55

标签: c# properties encapsulation

通常我会尝试尽可能多地使用自动属性。但是我经常需要在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
    }
}

0 个答案:

没有答案