Я просто заметил странное явление в С#/. NET.
Я создал этот минимальный пример, чтобы продемонстрировать:
if (new sbyte[5] is byte[])
{
throw new ApplicationException("Impossible!");
}
object o = new sbyte[5];
if (o is byte[])
{
throw new ApplicationException("Why???");
}
Это бросит "Зачем???", но не "Невозможно!". Он работает для всех массивов интегральных типов одинакового размера. Может кто-то объяснить это мне? Я смущен. Кстати, я использую .NET 4.
P.S.: Я знаю, что я могу получить ожидаемый результат, используя o.GetType() == typeof(byte[])
.