Можно ли показать как иерархию типов графов с реально построенными типами.В основном, я забочусь о сконструированных обобщенных типах, чтобы понять, как ковариация и контравариантность типов
Как, например, у меня есть типы:
public class Foo {}
public class Bar : Foo {}
Я создаю переменную типа List<Bar>
.Так что я могу присвоить значение этой переменной IEnumerable<Bar>
, IEnumerable<Foo>
и IEnumerable
(верно?)
List<Bar> a = new List<Bar>();
IEnumerable<Bar> b = a;
IEnumerable<Foo> c = a;
IEnumerable d = a;
Так что я хотел бы увидеть что-то вроде:
IEnumerable
↑
IEnumerable<Foo>
↑
IEnumerable<Bar>
↑
List<Bar>