非泛型类型'System.Collections.IEnumerable'不能与类型参数一起使用

时间:2011-08-03 18:39:09

标签: c# .net generics queue nodes

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

为什么我会这样做?

3 个答案:

答案 0 :(得分:24)

如果您想使用IEnumerable<T>,正如您的帖子标题所示,您需要添加using System.Collections.Generic;

对于SingleLinkNode类,我不知道你从哪里得到它,它不是我能看到的.NET框架的一部分。我猜它没有使用泛型实现,你需要在objectT处添加一堆强制转换。

答案 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类以获得更多答案...

约翰