簡體   English   中英

可空和泛型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM