列表<t> </t>的属性

时间:2011-02-06 06:16:03

标签: c#

List<T> lst = new List<T>();

public List<T> List
{
    get { return lst; }
    set { //cod...???????????????????? }
}

6 个答案:

答案 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简单封装它。 ;)

enter image description here