Я понимаю, что дисперсия типа используется в следующих случаях:
-
Если общий тип
G
имеет параметр типаT1
, который появляется как тип аргумента методаG
, тогдаG
может быть контравариантным вT1
. -
Если
G
имеет параметр типаT2
, который появляется как тип любого возвращаемого значения метода (или ctor)G
, тоG
может быть ковариантным вT2
.
Что делать, если я могу заменить, должен быть в предложениях выше? Есть ли другой случай совместного и контра-варианта использования? Когда и почему вы делаете свои типы совпадающими и противоречивыми?