Вы можете делать > , <, == и т.д. сравнения между sbyte и byte, int, uint, short, ushort, long, double и float. Но не ulong.
Мой мозг взрывается. Может ли кто-нибудь объяснить, почему sbyte можно сравнить с uint, но не ulong?
public bool sbyte_ulong_compare(sbyte x, ulong y)
{
return x < y; // compiler error CS0019
}
Кроме того, использование unchecked
не улучшает работу. Плавление головного мозга.
Другое редактирование. Это работает:
public bool sbyte_ulong_compare(sbyte x, ulong y)
{
//
// returns x < y
//
if (x < 0)
return true;
if (y > 127)
return true;
return ((long)x < (long)y);
}