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

为什么我得到这个?

最佳答案

我很确定您尚未将SingleLinkNode类定义为具有通用类型参数。因此,用一个声明它的尝试失败。

错误消息表明SingleLinkNode是一个嵌套类,因此我怀疑可能正在发生的事情是,您声明的是SingleLinkNode类型的T的成员,而没有实际将T声明为SingleLinkNode的通用参数。如果希望SingleLinkNode是通用的,则仍然需要执行此操作,但是如果不希望这样做,则可以简单地将该类用作SingleLinkNode而不是SingleLinkNode<T>

我的意思示例:

public class Generic<T> where T : class
{
    private class Node
    {
        public T data; // T will be of the type use to construct Generic<T>
    }

    private Node myNode;  // No need for Node<T>
}

如果您确实希望嵌套类是泛型的,那么它将起作用:
public class Generic<T> where T : class
{
    private class Node<U>
    {
        public U data; // U can be anything
    }

    private Node<T> myNode;  // U will be of type T
}

10-06 12:36