gpt4 book ai didi

c# - 泛型方法无法在 IEnumerable 上利用协方差

转载 作者:行者123 更新时间:2023-11-30 20:42:34 24 4
gpt4 key购买 nike

我想知道为什么以下代码无法编译,除了“Instance argument: cannot convert from 'System.Collections.Generic.IEnumerable ' to 'System.Collections.Generic.IEnumerable ' ":

public static List<TInterface> Foo<TInterface, TImpl>(IEnumerable<TImpl> input)
where TImpl : TInterface
{
return input.ToList<TInterface>();
}

我知道我可以将返回行更改为 input.Cast<TInterface>().ToList()相反,但想了解为什么编写的代码无法编译。在我看来,编译器似乎应该能够验证 input 是否可以隐式转换为 IEnumerable

最佳答案

方差仅适用于类。

class, 添加到您的约束中。

Demo

关于c# - 泛型方法无法在 IEnumerable<T> 上利用协方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31279622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com