Почему я могу сравнивать sbyte со всеми другими числовыми типами * кроме * ulong?

Вы можете делать>, <, == и т. Д. Сравнения sbyte и byte, int, uint, short, ushort, long, double и float. Но не улонг.

Мой мозг взрывается. Может ли кто-нибудь объяснить, почему 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);
}
25
задан Amy 1 December 2010 в 18:42
поделиться