object> list = new List(); 这个为什么就可以
A: 这就要讲到C#泛型里的逆变协变了
Q: 细嗦细嗦
逆变协变
C#泛型中的逆变(in)协变(out)对于不常自定义泛型的开发来说..., 帮助开发者更好地复用代码, 同时通过约束限制可能会出现的破坏类型安全的操作
逆变协变的限制
虽然上面讲了逆变(in)协变(out)看起来是什么样的, 但我的那个朋友还是有些疑问
Q: 那我什么时候可以用逆变..., 什么时候可以用协变, 这两个东西用起来有什么限制?...A: 简单来说, 有关泛型输入的用逆变, 关键词是in, 有关泛型输出的用协变, 关键词是out, 如果接口中既有输入又有输出, 就不能用逆变协变
Q: 为什么这两个不能同时存在?..., 是将子类转为基类, 这个时候你也可以说基类是子类;
如果同时支持逆变协变, 若先进行子类赋值给基类的操作, 此时输出的是基类, 子类转为基类并不会有什么问题, 但进行输入操作时就是在将基类转为子类,