Domanda

Non viene generata un'eccezione, funzione appena soste in questa dichiarazione:

int productQuantity = Convert.ToInt32("1.00");

e rendimenti.

Che cosa sto facendo di sbagliato per convertire questo galleggiante Int32?

Nota:. Sono in esecuzione in un BackgroundWorkerThread

È stato utile?

Soluzione

Un'eccezione viene gettata in questo caso è solo non essere emerso nel debugger. Questa stringa non è in un formato che è convertibile in un tipo Int32 e quindi getta ed eccezione. È possibile verificare questo avvolgendolo in un blocco try / catch se l'IDE non sta cooperando.

L'approccio migliore è probabilmente quello di convertire la stringa in un double e poi gettato manualmente fino a giungere alla int. Questo fa aprire la porta per la perdita di dati a causa di differenze di precisione. Ma dato l'input è in un formato stile float questo è inevitabile se si desidera che il prodotto finale sia una int

Altri suggerimenti

È necessario convertirlo in un double prima, e poi convertire in Int32.

int productQuantity = Convert.ToInt32(double.Parse("1.00"));

Un'eccezione viene lanciata, è solo che a vederlo è necessario controllare la proprietà RunWorkerCompletedEventArgs.Error nel gestore di eventi per BackgroundWorker.RunWorkerCompleted.

Ogni eccezione che viene generata dal filo del lavoratore di sfondo quando il lavoro di fondo è stato fatto è assegnato a quella proprietà.

FormatException stringa di input non era in un formato corretto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top