一般来说, 泛型的作用就类似一个占位符, 或者说是一个参数, 可以让我们把类型像参数一样进行传递, 尽可能地复用代码。...object> list = new List(); 这个为什么就可以
A: 这就要讲到C#泛型里的逆变协变了
Q: 细嗦细嗦
逆变协变
C#泛型中的逆变(in)协变(out)对于不常自定义泛型的开发来说..., 可以进行符合直觉且和谐的转化
前编中提到的代码例子不适用并且也不能改造成协变, 只适合使用逆变
相比于符合直觉且和谐的协变, 逆变是不符合直觉并且别扭的
IFace item = new...类型, 而实际上最终调用的 Face.Print 是支持 object 的, 传入 string 类型的参数没有任何问题
逆变协变的作用
逆变(in)协变(out)的作用就是扩展泛型的用法...A: 简单来说, 有关泛型输入的用逆变, 关键词是in, 有关泛型输出的用协变, 关键词是out, 如果接口中既有输入又有输出, 就不能用逆变协变
Q: 为什么这两个不能同时存在?