using System.Collections.Generic;
public sealed class LoLQueue<T> where T: class
{
private SingleLinkNode<T> mHe;
private SingleLinkNode<T> mTa;
public LoLQueue()
{
this.mHe = new SingleLinkNode<T>();
this.mTa = this.mHe;
}
}
错误:
The non-generic type 'LoLQueue<T>.SingleLinkNode' cannot be used with type arguments
为什么我会这样做?
答案 0 :(得分:24)
如果您想使用IEnumerable<T>
,正如您的帖子标题所示,您需要添加using System.Collections.Generic;
。
对于SingleLinkNode类,我不知道你从哪里得到它,它不是我能看到的.NET框架的一部分。我猜它没有使用泛型实现,你需要在object
到T
处添加一堆强制转换。
答案 1 :(得分:2)
我很确定您没有将SingleLinkNode
类定义为具有泛型类型参数。因此,试图用一个声明它是失败的。
错误消息表明SingleLinkNode
是一个嵌套类,所以我怀疑可能发生的是您声明类型为SingleLinkNode
的{{1}}成员,而没有实际声明{{ 1}}作为T
的通用参数。如果您希望T
是通用的,那么仍然需要这样做,但如果不是,那么您只需将该类用作SingleLinkNode
而不是SingleLinkNode
。
我的意思是:
SingleLinkNode
如果你做希望你的嵌套类是通用的,那么这将有效:
SingleLinkNode<T>
答案 2 :(得分:2)
这为我编译:
public sealed class SingleLinkNode<T>
{
}
public sealed class LoLQueue<T> where T : class
{
private SingleLinkNode<T> mHe;
private SingleLinkNode<T> mTa;
public LoLQueue()
{
this.mHe = new SingleLinkNode<T>();
this.mTa = this.mHe;
}
}
您需要发布您的SingleLinkNode类以获得更多答案...
约翰