Не генерируется исключение, функция просто останавливается в этом операторе:
int productQuantity = Convert.ToInt32("1.00");
и возвращает.
Что я делаю не так, чтобы преобразовать это число с плавающей точкой в Int32
?
Примечание: я работаю в BackgroundWorkerThread
.
В этом случае генерируется исключение, оно просто не отображается в отладчике. Эта строка не имеет формат, который может быть преобразован в тип Int32
и, следовательно, вызывает выбросы и исключение. Вы можете проверить это, заключив его в блок try / catch, если IDE не взаимодействует.
Лучшим подходом здесь, вероятно, является преобразование строки в double
, а затем вручную преобразовать ее в int
. Это действительно открывает дверь для потери данных из-за разницы в точности. Но учитывая, что ваш ввод находится в формате стиля с плавающей запятой, это неизбежно, если вы хотите, чтобы конечный продукт был int
Вам нужно сначала преобразовать его в double
, а затем преобразовать в Int32
.
int productQuantity = Convert.ToInt32(double.Parse("1.00"));
Выдается исключение, просто чтобы увидеть его, вам нужно проверить свойство RunWorkerCompletedEventArgs.Error
в обработчике событий для BackgroundWorker.RunWorkerCompleted
.
Любое исключение, которое создается потоком фонового рабочего процесса, когда выполняется фоновая работа, назначается этому свойству.
FormatException Входная строка имела неверный формат.