2009-08-05 21 views
6

ジェネリックメソッドから 'null'を返すことはできませんか?

私は以下のような一般的なメソッドを持っています:

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

基本的にはdbでルックアップを実行しますが、結果が返されない場合もあります。

しかし、明らかに ''のためにそれは不可能です.Tとnullの間の暗黙の変換はありません。この場合、私は何をすべきですか?

答えて

24

Tは値型である可能性があるため、Tをnullにすることはできません。

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

少なくとも.NET 3.5では、上記は '... where T:class、ILevelElement'にする必要があります。コンパイラは、 'class'キーワードを最初にしたいので、チョークします。 –

0

ダスティンキャンベル権利である:デフォルト(T)を返すかそこらは次のようにTのみが参照型であることを示すために、クラスの制約を追加してみてください。別の解決策は、default(T)を返すことです。

+0

oh。私は彼が既定のキーワードについてあなたにすでに話したことは分かりませんでした。私の答えを無視してください。 –

関連する問題