Ковариантность\Контрвариантность
Ковариантность - неявный 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