ジェネリックメソッドから 'null'を返すことはできませんか?
私は以下のような一般的なメソッドを持っています:public T GetLevelElement<T>(string name) where T : ILevelElement
{
//[...]
}
基本的にはdbでルックアップを実行しますが、結果が返されない場合もあります。
しかし、明らかに ''のためにそれは不可能です.Tとnullの間の暗黙の変換はありません。この場合、私は何をすべきですか?
ジェネリックメソッドから 'null'を返すことはできませんか?
私は以下のような一般的なメソッドを持っています:public T GetLevelElement<T>(string name) where T : ILevelElement
{
//[...]
}
基本的にはdbでルックアップを実行しますが、結果が返されない場合もあります。
しかし、明らかに ''のためにそれは不可能です.Tとnullの間の暗黙の変換はありません。この場合、私は何をすべきですか?
Tは値型である可能性があるため、Tをnullにすることはできません。
public T GetLevelElement<T>(string name) where T : ILevelElement, class
{
[...]
}
ダスティンキャンベル権利である:デフォルト(T)を返すかそこらは次のようにTのみが参照型であることを示すために、クラスの制約を追加してみてください。別の解決策は、default(T)
を返すことです。
oh。私は彼が既定のキーワードについてあなたにすでに話したことは分かりませんでした。私の答えを無視してください。 –
少なくとも.NET 3.5では、上記は '... where T:class、ILevelElement'にする必要があります。コンパイラは、 'class'キーワードを最初にしたいので、チョークします。 –