列表<t>&amp;其中T:</t>

时间:2011-09-08 11:58:44

标签: c# list

我有简单的代码,可以正常工作:

public class Example
{

    private List<SomeClass> _list = new List<SomeClass>();

    public void Add(SomeClass _b) {
        _list.Add(_b);
    }

}

可以将SomeClass添加到_list这样的东西吗? (没有指定参数)?

public void Add<T>() where T : SomeClass
{

}

4 个答案:

答案 0 :(得分:5)

假设SomeClass有一个默认构造函数,你可以:

public void Add<T>() where T : SomeClass, new()
{
    _list.Add(new T());
}

如果SomeClass没有默认构造函数,那么您将无法编写new T(),并且需要找到另一种获取T对象的方式。

答案 1 :(得分:4)

您可以使用泛型:

public class Example<T>
{
 private List<T> = _list = new List<T>();
 public void Add(T element)
 {
   _list.Add(element);
 }
}

答案 2 :(得分:2)

你会加入什么?我认为没有任何意义。 Example的外部消费者将无法添加任何内容。

答案 3 :(得分:1)

你必须这样做

public void Add<T>(T _b) where T : SomeClass
{

}

但它毫无意义,与现有代码的含义相同。