Почему мой массив 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.