我有一个函数,当给定 a 时,List<T>
会从中选择 a 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();
}
您能否解释一下为什么它无法推断出正确的类型,也许我目前的实现是最好的?