仅允许属性访问变量

时间:2016-01-06 10:37:25

标签: c# scope

我希望每次在列表中更改值时触发一个方法。

与此相关的其他问题的最佳答案是使用我拥有的属性(如下所示)

然而,我认为如果我拒绝任何除了可以访问它更改的“核心”列表的属性之外的其他任何内容,我会认为这有助于防止任何意外错误(因为缺乏更好的理解这个术语是什么)。

下面是我带有get和set访问器的示例属性。

private List<Things>myPrivateList; // Only the Property should be able to access

private List<Things>MyPrivateList // Only the class its in can touch this
{
    get { return myPrivateList; }
    set
    {
        myPrivateList = value;
        coolMethodThatNeedsToRunEverytime();
    }
}

public List<Things>getMyPrivateList // Any class outside can read this
{
   get { return myPrivateList; }
}

我可能会以错误的方式解决这个问题,知道你是否对我想要实现的目标有任何建议会很有用。非常感谢您提供的任何建议/示例。

1 个答案:

答案 0 :(得分:1)

你可以用一个属性做你想做的事:

public List<Things>MyPrivateList // Only the class its in can touch this
{
    get { return myPrivateList; }
    private set
    {
       myPrivateList = value;
        coolMethodThatNeedsToRunEverytime();
    }
}

这样做,setter将是私有的,而getter是公共的