1、說明:協變和逆變只能出現在接口和委託中。
協變通過out來修飾,逆變通過in來修飾
對引用類型有效,對值類型無效
2、需要解決的問題:
3、解決方案:
IEnumerable<Parent> _parents = new List<Child>();
查看 IEnumerable的定義發現
在泛型參數的前面添加了out參數。
4、補充:
out協變:被修飾的參數只能出現在返回值的位置。
in逆變:被修飾的參數只能出現在參數的位置。
5、逆變的事例:
6、自己寫一個逆變和協變的事例: