协变与逆变
在interface中:
-协变(以out关键字定义): 允许接口方法返回更具体的类型(派生类类型)。例如,一个返回类型为 T 的方法实际上可以返回 T 的任何子类。
-逆变(in): 允许接口方法接受更抽象的类型(基类类型)。例如,一个参数类型为 T 的方法实际上可以接受 T 的任何基类。
特别注意: in和out互斥,以避免实现该接口的类在转化时发生类型不安全问题。
在delegate中
(假设 Cat 继承自 Animal)
-协变: 允许委托返回类型为派生类。这意味着一个返回 Animal 的委托可以引用返回 Cat 的方法。
-逆变: 允许委托接受基类作为参数。例如,一个接受 Cat 参数的委托可以引用一个接受 Animal 参数的方法。
浙公网安备 33010602011771号