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
}