List<T> & where T :

本文关键字:where amp gt List lt | 更新日期: 2023-09-27 18:08:13

我有一个简单的代码可以工作:

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

是否有可能将someeclass添加到_list这样的东西?(不指定参数)?

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

List<T> & where T :

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

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

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

可以使用泛型:

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

你会添加什么?我看不出这有什么意义。Example的外部消费者将无法添加任何内容

你必须做

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