2011-02-03 8 views
3

임의의 수의 자식 노드, 노드 키의 문자열 및 null 일 수있는 데이터 노드를 보유 할 수있는 일반 노드 클래스를 만들려고합니다. 그러나 구문을 올바르게 Nullable 제네릭 매개 변수를 일반 받아 들일 수있는 문제가 있어요. 컴파일시에Nullable 및 generics

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'는 제네릭 형식의 매개 변수로 'T'를 사용하기 위해 nullable이 아닌 값 형식이어야합니다 또는 메서드 'System.Nullable'

E가 nullable이 아닌 형식인지 또는이 문제를 해결할 수있는 방법이 있습니까?

답변

9

당신은 필요 Nullable<E> 또는 E?가 잘 작동 할 수 있습니다 Nullable<>을 제외한 값 유형

internal class TrieNode<E> where E : struct 

: struct 절 제한 E.

-2

object을 사용하는 노드를 선언하지 않는 이유는 무엇입니까? 객체는 모든 데이터 유형을 참조 할 수 있으며 null 일 수도 있습니다.

+5

제네릭 사용. – siride

0

어쩌면 E 내부 클래스 TrieNode 시도 : 구조체

내가 생각 을 nullable 형식은 값 형식이 아닌 참조 유형 (참조 유형은 이미 널 (NULL)) 할 필요가의 요점을 물리 칠 것