Важно обратить внимание на сообщение об исключении, которое генерирует System.OverflowException
, а именно:
Значение было слишком большим или слишком маленьким для Int32.
Это дает вам большой ключ к пониманию проблемы.
Далее, если вы посмотрите на значение textnumbers
после завершения for
l oop, вы увидите, что его значение равно 199201203205207
. Как упоминалось в Çöđěxěŕ, максимальное значение, которое может хранить 32-разрядное целое число со знаком, составляет 2147483647
, поэтому исключение говорит о том, что 32-разрядное целое число недостаточно велико для сохранения нужного значения.
Чтобы исправить это, вы можете использовать 64-разрядное целое число:
long num = Convert.ToInt64(textnumbers);
long
представляет 64-разрядное целое число со знаком и может хранить значения в диапазоне от -9223372036854775808
до 9223372036854775807
, включительно, в котором можно удобно хранить 199201203205207
.
Если вам когда-нибудь понадобится узнать диапазон значений, которые может представлять тип цифр c, вы можете проверить его MinValue
и MaxValue
свойства (например, int.MinValue
, или long.MaxValue
).
Одно: вы должны научиться работать с отладчиком, потому что это устраняет проблемы такого рода самостоятельно. Это время стоит потратить, чтобы вы могли самостоятельно решать такие проблемы, не полагаясь на других.