我有简单的代码,可以正常工作:
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
{
}
答案 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
{
}
但它毫无意义,与现有代码的含义相同。