假设我有一个 C# 类:
class Foo
{
private List<Bar> _barList;
List<Bar> GetBarList() { return _barList; }
...
}
客户可以这样称呼它:
var barList = foo.GetBarList();
barList.Add( ... );
有没有办法使Add
方法失败,因为只返回只读版本_barList
?
假设我有一个 C# 类:
class Foo
{
private List<Bar> _barList;
List<Bar> GetBarList() { return _barList; }
...
}
客户可以这样称呼它:
var barList = foo.GetBarList();
barList.Add( ... );
有没有办法使Add
方法失败,因为只返回只读版本_barList
?
是的,作为GetBarList()
回报_barList.AsReadOnly()
。
编辑:
正如迈克尔在下面指出的那样,您的方法必须返回一个IList<Bar>
.
您可以尝试使用ReadOnlyCollection。或者从您的方法中只返回 IEnumerable,客户端将没有修改它的方法。