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