一、說明:協變和逆變只能出如今接口和委託中。
ide
協變經過out來修飾,逆變經過in來修飾
blog
對引用類型有效,對值類型無效
接口
二、須要解決的問題:it
三、解決方案:class
IEnumerable<Parent> _parents = new List<Child>();泛型
查看 IEnumerable的定義發現List
在泛型參數的前面添加了out參數。引用
四、補充:im
out協變:被修飾的參數只能出如今返回值的位置。
db
in逆變:被修飾的參數只能出如今參數的位置。
五、逆變的事例:
六、本身寫一個逆變和協變的事例: