2011-09-08 40 views
2

我已经简单的代码巫工程确定:名单<T>&其中T:

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 
{ 

} 
+2

不 - 你在添加什么?没有实例要添加。 –

+0

如果没有参数,你打算添加什么? –

+2

你究竟在做什么? –

回答

5

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

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

如果SomeClass没有一个默认的构造函数,那么你就不能写new T(),你将需要找到获得的另一种方式一个T对象。

2

你会添加什么?我没有看到任何意见。 Example的外部消费者将无法添加任何内容。

4

您可以使用泛型:

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

你必须做的

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

} 

但它是相当没有意义的,意味着同样的事情,你现有的代码。

相关问题