可空和泛型

hel*_*922 3 c# generics nullable

我正在尝试创建一个通用节点类,它可以容纳任意数量的子节点,一个节点键的字符串,以及一个可能为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>>();
    }
}
Run Code Online (Sandbox Code Playgroud)

在编译时我得到以下错误消息:

类型'E'必须是非可空值类型,以便在泛型类型或方法'System.Nullable'中将其用作参数'T'

有没有办法保证E是一个不可为空的类型,或者其他方式?

Mar*_*ell 9

您只需要:

internal class TrieNode<E> where E : struct
Run Code Online (Sandbox Code Playgroud)

: struct条款限制E排除的Nullable<>值,允许Nullable<E>E?正常工作.