يفشل Convert.Toint32 (تعويم) عند محاولة تحويل الطفو إلى int32
-
01-10-2019 - |
سؤال
لم يتم طرح أي استثناء ، وتتوقف الوظيفة في هذا البيان:
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 لم تكن بتنسيق صحيح.