加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Nullable和泛型

发布时间:2020-12-16 01:41:00 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个通用节点类,它可以容纳任意数量的子节点,一个节点键的字符串,以及一个可能为null但可能不为null的数据节点.但是,我遇到了使语法正确接受泛型为Nullable的泛型参数的问题. internal class TrieNodeE{ NullableE Data; string Key; ListTrie
我正在尝试创建一个通用节点类,它可以容纳任意数量的子节点,一个节点键的字符串,以及一个可能为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是一个不可为空的类型,或者其他方式?

解决方法

您只需要:

internal class TrieNode<E> where E : struct

:struct子句将E限制为除Nullable<>之外的值类型,它允许Nullable< E>.还是E?工作正常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读