共/逆变?元组<字符串,IEnumerable<字符串>>对 List 不满意
我无法理解为什么我不能调用具有此签名的方法:
public void Test(Tuple<int, IEnumerable<string>> x);
就像这样:
Test(Tuple.Create(4, new List<string>()))
我认为这与协/逆变有关,但这只是一个猜测。有人可以分享他的聪明才智吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,Tuple 类没有标记为协变或逆变,原因是只有接口可以是协变或逆变。因此类型参数必须完全匹配。 这就是为什么类可以不要协变和逆变。
Yes, the
Tuple
class is not marked as co- or contravariant, the reason being only interfaces can be co- or contravariant. So the type parameters have to match exactly. Here's the reason why classes can't be co- and contravariant.