2

我无法理解为什么我不能用这个签名调用方法:

public void Test(Tuple<int, IEnumerable<string>> x);

像那样:

Test(Tuple.Create(4, new List<string>()))

我认为这与协/逆变有关,但这只是一个猜测。有人可以分享他的聪明吗?

4

1 回答 1

4

是的,Tuple该类没有被标记为协变或逆变,原因是只有接口可以是协变或逆变的。所以类型参数必须完全匹配。这就是为什么类不能是 co- 和 contravariant 的原因

于 2011-06-22T09:48:48.990 回答