关于泛型函数参数的问题

Isa*_*ger 0 c#

我只是想知道为什么传递System.Collections.Generic.List<string>到这个功能test(ICollection<object> t)将无法正常工作,我为什么不能将它传递像传递stringtest2(object t)

对我来说没什么意义!

Ben*_*igt 7

因为ICollection它不是仅输出接口,所以它不是协变的.

考虑以下代码:

void test(ICollection<object> t)
{
    t.Add(new TextBox());
}

List<string> lst;
test(lst);
Run Code Online (Sandbox Code Playgroud)

test试图TextBox填入a 时应该发生什么List<string>

合同ICollection<object>是任何object可以放入,并且出来的项目将始终是类型object.但List<string>只满足合同的一半.