Ковариантность\Контрвариантность

Ковариантность\Контрвариантность

Ковариантность - неявный UpCast к базовым типам, от которых наследуется элемент.

Контрвариантность - неявный DownCast к типам, которые наследуются от элемента.

Массивы элементов структурных типов не ковариантны и не контрвариантны. (Подробнее: Ковариантность\Контрвариантность).

Исключение

Противоречие между системой типов CLI и системой типов C#(ковариантность массивов типов-значений не согласована)

Проверяем на ковариантность массив структурного типа uint:

uint[] array = new uint[3];

Console.WriteLine("array is uint - {0}", array is uint[]);
Console.WriteLine("array is int - {1}", array is int[]);

Результат будет:

array is uint - true
array is int  - false

Но в случае приведения к базовому типу Object:

uint[] array = new uint[3];

object obj = array;

Console.WriteLine("object is uint - {0}", obj is uint[]);
Console.WriteLine("object is int - {1}", obj is int[]);

Результат будет:

object is uint - true
object is int  - true

results for ""

    No results matching ""