假设我有一个C#类:
class Foo
{
private List<Bar> _barList;
List<Bar> GetBarList() { return _barList; }
...
}
客户可以拨打电话:
var barList = foo.GetBarList();
barList.Add( ... );
有没有办法让Add
方法失败,因为只返回了_barList
的只读版本?
答案 0 :(得分:16)
是的,在GetBarList()
返回_barList.AsReadOnly()
。
修改强>
正如迈克尔在下面指出的那样,您的方法必须返回IList<Bar>
。
答案 1 :(得分:4)
您可以尝试使用ReadOnlyCollection。或者从您的方法返回IEnumerable,客户端将没有方法来修改它。