协变与逆变

在interface中:
-协变(以out关键字定义): 允许接口方法返回更具体的类型(派生类类型)。例如,一个返回类型为 T 的方法实际上可以返回 T 的任何子类。
-逆变(in): 允许接口方法接受更抽象的类型(基类类型)。例如,一个参数类型为 T 的方法实际上可以接受 T 的任何基类。
特别注意: in和out互斥,以避免实现该接口的类在转化时发生类型不安全问题。

在delegate中
(假设 Cat 继承自 Animal
-协变: 允许委托返回类型为派生类。这意味着一个返回 Animal 的委托可以引用返回 Cat 的方法。
-逆变: 允许委托接受基类作为参数。例如,一个接受 Cat 参数的委托可以引用一个接受 Animal 参数的方法。

posted on 2024-02-28 08:59  manber  阅读(18)  评论(0)    收藏  举报

导航