Ниже приведен код, который был введен в Здесь показано немедленное окно с выводом:
Код: Выделить всё
int i = -1;
-1
Код: Выделить всё
string s = i.ToString("x");
"ffffffff"
Код: Выделить всё
int j = Convert.ToInt32(s, 16);
-1
Код: Выделить всё
int k = 0xFFFFFFFF;
Невозможно неявно преобразовать тип «uint» в «int». Существует явное преобразование (вам не хватает приведения?)
Код: Выделить всё
int l = Convert.ToInt32(0xFFFFFFFF);
OverflowException не было обработано: значение было слишком большим или слишком маленьким для Int32.
Почему шестнадцатеричное число строки можно преобразовать без проблем, а литерал можно преобразовать только с помощью unchecked?
Подробнее здесь: https://stackoverflow.com/questions/336 ... presents-1