を指定すると、次のようなものList<T>
を選択する関数があります。List<V>
V : T
現在の実装は次のとおりです。
public List<V> Subset<T, V>(IEnumerable<T> exo)
where V : class
where V : T
{
return exo.Where(elem => elem is V).Select(elem => elem as V).ToList();
}
V
のサブクラスであると述べられているため、より簡潔なものが機能するはずだと思いますがT
:
// Does not comile: can not implicitly convert List<T> to List<V>
public List<V> Subset<T, V>(IEnumerable<T> exo) where V : T
{
return exo.Where(elem => elem is V).ToList();
}
正しい型を推測できない理由と、おそらく私の現在の実装が可能な限り最善であるかどうかを説明してください。