重複の可能性:
ジェネリック拡張メソッドによる型推論なし
コレクション内の最初のオブジェクトを返す Constraint を使用したジェネリック関数があります。
static T first<T, L>(L list)
where L : ICollection<T>
where T : SomeType
{
T r = default(T);
if (list != null && list.Count>0)
{
if (list.Count == 1)
{
r = list.First();
}
else
{
//throw some exception ...
}
}
return r;
}
しかし、コレクションに対して使用すると、コードがコンパイルされず、「使用法から型を推測できません」というエラーが表示されます。
ICollection<SomeType> list = funcReturnCollectionOfSomeType();
SomeType o = first(list);
理由がわかりませんでした。誰か助けてくれる人はいますか?ありがとうございました。