[英]Nullable and generics
我正在尝试创建一个通用节点类,它可以容纳任意数量的子节点,一个节点键的字符串,以及一个可能为null但可能不为null的数据节点。 但是,我遇到了使语法正确接受泛型为Nullable的泛型参数的问题。
internal class TrieNode<E>
{
Nullable<E> Data;
string Key;
List<TrieNode<E>> Children;
public TrieNode(E? data, string key)
{
Data = data;
Key = key;
Children = new List<TrieNode<E>>();
}
}
在编译时我得到以下错误消息:
类型'E'必须是非可空值类型,以便在泛型类型或方法'System.Nullable'中将其用作参数'T'
有没有办法保证E是一个不可为空的类型,或者其他方式?
您只需要:
internal class TrieNode<E> where E : struct
: struct
子句将E
限制为除Nullable<>
之外的值类型,它允许Nullable<E>
或E?
工作正常。
也许尝试内部类TrieNode,其中E:struct
我认为 Nullable类型需要是值类型而不是引用类型(引用类型已经可以为空)
为什么不直接声明节点使用object
? 对象可以引用任何数据类型,也可以为null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.