協方差和違反:編程中的明確區別 >協方差和違反率是編程中的基本概念,它定義了類型關係如何影響功能映射和數據結構輸入/輸出類型。 本質上,協方差保留了可分配性方向,而逆向逆轉。
協方差:維護分配性
讓我們用類型集說明:
映射t→iEnumerable
保持分配性。 如果<code>{ Animal, Tiger, Fruit, Banana } { IEnumerable<Animal>, IEnumerable<Tiger>, IEnumerable<Fruit>, IEnumerable<Banana> }</code>是
的子類型,則Tiger
>的子類型。這在容器類型中很常見,其中亞型適用於包含的元素。
Animal
IEnumerable<Tiger>
違反:倒置分配性IEnumerable<Animal>
現在,考慮以下類型集:
映射t→iComable倒置分配性。如果
是<code>{ IComparable<Tiger>, IComparable<Animal>, IComparable<Fruit>, IComparable<Banana> }</code>>的超構型,則
是Animal
>
Tiger
IComparable<Animal>
>鍵差總結IComparable<Tiger>
協方差維護可分配性方向;子類型值可以分配給函數輸入和輸出中的超級型值。 相比之下,違反逆轉性可分配性,將超級型值分配賦予輸入參數中的子類型值,但在輸出參數中不進行。 >
以上是協變與逆變:這些概念在程式設計上有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!