Почему мой массив C # теряет информацию о знаке типа при приведении к объекту?

Исследуя ошибку, я обнаружил, что это произошло из-за этой странности в c #:

sbyte[] foo = new sbyte[10];
object bar = foo;
Console.WriteLine("{0} {1} {2} {3}",
        foo is sbyte[], foo is byte[], bar is sbyte[], bar is byte[]);

Вывод будет «True False True True», хотя я бы ожидал »bar is byte[]& Quot; вернуть Ложь. Видимо, бар является одновременноbyte[] иsbyte[]? То же самое происходит для других типов со знаком / без знака, таких какInt32[] противUInt32[]но не сказатьInt32[] противInt64[].

Кто-нибудь может объяснить это поведение? Это в .NET 3.5.

Ответы на вопрос(4)

Ваш ответ на вопрос