让我们上这个课:
ExampleClass
{
public List<string> MyValue { get; set; }
}
问题是如何限制外部类对该属性的修改,即向集合添加对象,创建new()。
答案 0 :(得分:0)
您可以拥有这样的东西
public ReadOnlyCollection<string> MyValue {get; private set;}
答案 1 :(得分:0)
您可以将其显示为IEnumerable<string>
而不是列表。该界面不允许添加。您仍然可以将其存储为内部列表,也可以存储为私有字段,以便类本身可以根据需要添加或删除。
例如:
class ExampleClass
{
private List<string> _myValue = new List<string>();
public IEnumerable<string> MyValue
{
get
{
foreach (var s in _myValue) yield return s;
}
}
}
如果呼叫者想使用自己的列表,它当然可以这样做:
var list = exampleClass.MyValue.ToList();
此时,调用者拥有它,很明显,它选择添加的任何内容都与原始列表无关。