List<T> lst = new List<T>();
public List<T> List
{
get { return lst; }
set { //cod...???????????????????? }
}
答案 0 :(得分:5)
List<T> lst = new List<T>();
public List<T> List
{
get { return lst; }
set { lst = value; }
}
答案 1 :(得分:2)
在大多数情况下,你不想要一个setter,有效地使列表本身是只读的。换句话说,任何人都可以更改列表的内容,但是您永远不能为该对象的实例提供新列表。
答案 2 :(得分:1)
从上面的评论中看起来你想让setter复制所有项目,在这种情况下你会这样做:
private List<T> lst;
public List<T> List {
get { return lst; }
set { lst = new List<T>(value); }
}
但如果这就是你想要的,我建议你只使用一个自动财产:
public List<T> MyList { get; set; }
当然,这会引发封装问题,正如Gabe指出的那样。
答案 3 :(得分:1)
我经常建议集合类型的属性没有公共集,因此它们不允许更改实际的集合对象引用,只修改集合。否则,如果用户保存对集合的引用,然后在代码的另一部分中将属性设置为另一个集合,则可能导致混淆问题。然后,第一个用法引用包含该属性的类未使用的内容。
public List<T> List { get; private set;}
public MyClass()
{
this.List = new List<T>();
}
或者,取决于您想要定义集合的时间和方式......
private List<T> list = new List<T>();
public List<T> List { get { return list; } }
答案 4 :(得分:0)
List<T> lst = new List<T>();
public List<T> List
{
get { return lst; }
set { lst.AddRange(value); }
}
答案 5 :(得分:0)
使用Studio简单封装它。 ;)