1.名詞解釋 (1)協變:父類的對象用子類代替 (2)抗變:子類的對象用父類代替 如方法的參數是協變的,而返回值是抗變的。 2.泛型介面的協變與抗變 (1)協變:IDemo<out T> 》IDemo<out ParentT> 泛型類型T只能作為IDemo中方法或屬性的返回值 (2)抗變:IDemo ...
1.名詞解釋
(1)協變:父類的對象用子類代替
(2)抗變:子類的對象用父類代替
如方法的參數是協變的,而返回值是抗變的。
2.泛型介面的協變與抗變
(1)協變:IDemo<out T> ===》IDemo<out ParentT>
泛型類型T只能作為IDemo中方法或屬性的返回值
(2)抗變:IDemo<in ParentT> ===》IDemo<in T>
泛型類型T只能作為IDemo中方法的參數
簡單的,從單詞out和in即可理解:out表示泛型類型只能作為返回,in表示泛型類型只能作為輸入
3.為什麼
由T向ParentT轉變是類型安全的,反之則是類型不安全的。