PrintOutput("This is a string"); 这段代码之所以有效是因为参数类型在C#中具有协变性,你可以将任意方法保存在类型对象的变量中,因为C#中返回类型是逆变的:object value = SomeMethod();如果在.NET推出后,你已经了解C#或VB.NET,那么你应该很熟悉以上的内容。但是规则发生了一些改变。在很多方法中,你直觉上认为有效的其实不然。随着你渐渐深入了解,会发现你曾经认为是漏洞的东西很可能是该语言的说明。现在是时候解释一下为什么集合以不同的方式工作,以及未来将发生些什么变化。