2009-08-05 14 views
6

Ich habe eine generische Methode wie:Kann 'Null' nicht von generischen Methoden zurückgegeben werden?

public T GetLevelElement<T>(string name) where T : ILevelElement 
{ 
    //[...] 
} 

, die im Grunde eine Suche in einem DB führt und in einigen Fällen funktioniert es nicht (und nicht zurückkehren kann) ein Ergebnis, und ich würde null zurückkommen.

Aber das ist natürlich nicht möglich wegen 'Es gibt keine implizite Umwandlung zwischen T und Null'. Was soll ich in diesem Fall tun?

Antwort

24

T kann nicht null sein, weil T ein Werttyp sein könnte. Versuchen Standard Rückkehr (T) oder das Hinzufügen einer Klasse Einschränkung, dass T, um anzuzeigen, kann nur wie so ein Referenztyp sein:

public T GetLevelElement<T>(string name) where T : ILevelElement, class 
{ 
    [...] 
} 
+3

In .NET 3.5 mindestens, sollte das oben genannte "... wo T: Klasse, ILevelElement". Der Compiler drosselt, weil er das Schlüsselwort 'class' als erstes haben möchte. –

0

Dustin Campbell richtig ist. Eine andere Lösung wäre, zurückzugeben.

+0

oh. Ich habe nicht gesehen, dass er dir bereits von dem Standard-Keyword erzählt hat. Ignoriere meine Antwort. –

Verwandte Themen