我只是想知道为什么把System.Collections.Generic.List<string>传递给这个函数test(ICollection<object> t)不起作用,为什么我不能像传递string一样传递给test2(object t)
对我来说没什么意义!
发布于 2010-08-06 13:17:59
因为ICollection不是一个只输出的接口,所以它不是协变的。
考虑下面的代码:
void test(ICollection<object> t)
{
t.Add(new TextBox());
}
List<string> lst;
test(lst);当test尝试将TextBox填充到List<string>中时,会发生什么情况
ICollection<object>的约定是可以放入任何object,并且输出的项将始终是object类型。但List<string>只满足了这一合同的一半。
https://stackoverflow.com/questions/3421138
复制相似问题