c# - 可空和泛型

标签 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>>();
    }
}

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

The type 'E' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Nullable'

有没有办法保证 E 是不可为 null 的类型,或者有其他方法可以解决这个问题?

最佳答案

你只需要:

internal class TrieNode<E> where E : struct

: struct条款限制 E值类型不包括Nullable<> ,它允许 Nullable<E>E?工作正常。

关于c# - 可空和泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4883015/

相关文章:

java - 自界泛型

c# - 对您来说它看起来像 C# 错误吗?

c# - 将枚举转换为人类可读的值

c# - C# 应用程序中未处理的异常是否会使应用程序崩溃?

c# - 如何在 C# 中执行原子写入/追加,或者如何使用 FILE_APPEND_DATA 标志打​​开文件?

java - 使用 Comparable 比较通用变量

c# - 单元测试抽象类和其中的 protected 方法

generics - 什么特征告诉编译器 `T` 是具有隐式复制的简单类型?

用 null 初始化的 C# 值类型

c# - 我怎样才能使 Byte[] 可以为空