6

假设我有一个 C# 类:

class Foo
{
    private List<Bar> _barList;
    List<Bar> GetBarList() { return _barList; }
...
}

客户可以这样称呼它:

var barList = foo.GetBarList();
barList.Add( ... );

有没有办法使Add方法失败,因为只返回只读版本_barList

4

2 回答 2

16

是的,作为GetBarList() 回报_barList.AsReadOnly()

编辑:
正如迈克尔在下面指出的那样,您的方法必须返回一个IList<Bar>.

于 2009-10-21T04:39:46.343 回答
4

您可以尝试使用ReadOnlyCollection。或者从您的方法中只返回 IEnumerable,客户端将没有修改它的方法。

于 2009-10-21T04:40:00.977 回答