تمرين - فحص أسلوب TryParse()
- 12 دقائق
عند العمل مع البيانات، في بعض الأحيان، تحتاج إلى تحويل بيانات السلسلة إلى نوع بيانات رقمية. كما تعلمت في الوحدة السابقة، نظرا لأن نوع بيانات السلسلة يمكن أن يحتوي على قيمة غير رقمية، فمن المحتمل أن يؤدي إجراء تحويل من string إلى نوع بيانات رقمي إلى حدوث خطأ في وقت التشغيل.
على سبيل المثال، التعليمات البرمجية التالية:
string name = "Bob";
Console.WriteLine(int.Parse(name));
يؤدي إلى الاستثناء التالي:
System.FormatException: 'Input string was not in a correct format.'
لتجنب استثناء تنسيق، استخدم الأسلوب TryParse() على نوع البيانات المستهدف.
استخدام TryParse()
الأسلوب TryParse() يقوم عدة أشياء في نفس الوقت:
- يحاول تحليل سلسلة في نوع البيانات الرقمية المعطاة.
- إذا نجحت، فإنه يخزن القيمة المحولة في معلمة خارجية، موضحة في القسم التالي.
- يقوم بإرجاع
boolللإشارة إلى ما إذا كان الإجراء قد نجح أو فشل.
يمكنك استخدام القيمة المرجعة المنطقية لاتخاذ إجراء بشأن القيمة (مثل إجراء بعض العمليات الحسابية)، أو عرض رسالة إذا لم تنجح عملية التحليل.
إشعار
في هذا التمرين، ستستخدم int نوع البيانات، ولكن تتوفر طريقة مماثلة TryParse() على جميع أنواع البيانات الرقمية.
معلمات خارجية
يمكن أن ترجع الأساليب قيمة أو ترجع "فارغة" - ما يعني أنها لا ترجع أي قيمة. كما يمكن للأساليب أن ترجع القيم خلال المعلمات out والتي يتم تحديدها تمامًا مثل أي معلمات إدخال أخرى ولكنها تتضمن الكلمة الأساسية out.
TryParse() سلسلة في int
احذف عامل تشغيل
//تعليق السطر أو استخدمه للتعليق على جميع التعليمات البرمجية من التدريبات السابقة.تحديث التعليمات البرمجية الخاصة بك في محرر التعليمات البرمجية Visual Studio كما يلي:
string value = "102"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); }افحص هذا السطر من التعليمات البرمجية:
if (int.TryParse(value, out result))عند استدعاء أسلوب مع معلمة
out، يجب استخدام الكلمة الأساسيةoutقبل المتغير الذي يحتوي على القيمة.outيتم تعيين المعلمةresultإلى المتغير في التعليمات البرمجية(int.TryParse(value,out result). يمكنك بعد ذلك استخدام القيمة التي تحتوي عليها المعلمةoutفي بقية التعليمات البرمجية باستخدام المتغيرresult.int.TryParse()يرجعtrueالأسلوب إذا نجح فيstringتحويل المتغيرvalueإلىint؛ وإلا، فإنه يرجعfalse. لذلك، قم بتطويق العبارة في عبارةif، ثم قم بتنفيذ منطق القرار، وفقًا لذلك.يتم تخزين القيمة المحولة
intفي المتغيرresult. يتم الإعلان عنintالمتغيّرresultوتهيئته قبل هذا السطر من التعليمات البرمجية، لذلك يجب أن يكون الوصول إليه متوفرًا داخل كتل التعليمات البرمجية التي تنتمي إلى العباراتifوelseبالإضافة إلى خارجها.ترشد
outالكلمة الأساسية المحول البرمجي إلى أنTryParse()الأسلوب لا يرجع قيمة بالطريقة التقليدية فقط (كقيمة إرجاع)، ولكنه يتصل أيضا بإخراج من خلال هذه المعلمة ثنائية الاتجاه.عند تشغيل التعليمات البرمجية، يجب أن تشاهد الإخراج التالي:
Measurement: 102
استخدم التحليل لاحقا في التعليمات int البرمجية
لإثبات أن
resultالمتغير الذي تم الإعلان عنه سابقا، يتم ملؤه بواسطةoutالمعلمة ويمكن استخدامه أيضا لاحقا في التعليمات البرمجية الخاصة بك، قم بتحديث التعليمات البرمجية في محرر التعليمات البرمجية Visual Studio كما يلي:string value = "102"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); } Console.WriteLine($"Measurement (w/ offset): {50 + result}");في قائمة Visual Studio Code File ، حدد Save. يجب حفظ ملف Program.cs قبل إنشاء التعليمات البرمجية أو تشغيلها.
في لوحة EXPLORER، لفتح Terminal في موقع مجلد TestProject، انقر بزر الماوس الأيمن فوق TestProject، ثم حدد Open in Integrated Terminal. يجب فتح لوحة Terminal، ويجب أن تتضمن موجه أوامر يظهر أن Terminal مفتوحة لموقع مجلد TestProject.
في موجه الأوامر Terminal، لتشغيل التعليمات البرمجية، اكتب dotnet run ثم اضغط على Enter.
إشعار
إذا رأيت رسالة تقول "تعذر العثور على مشروع لتشغيله"، فتأكد من أن موجه الأوامر Terminal يعرض موقع مجلد TestProject المتوقع. على سبيل المثال:
C:\Users\someuser\Desktop\csharpprojects\TestProject>ينبغي أن تشاهد المخرج التالي:
Measurement: 102 Measurement (w/ offset): 152افحص السطر الأخير من التعليمات البرمجية في النموذج السابق، ،
Console.WriteLine($"Measurement (w/ offset): {50 + result}");نظرا لأنresultالمتغير معرف خارج عبارة if، يمكن الوصول إليه لاحقا في التعليمات البرمجية الخاصة بك.
تعديل متغير السلسلة إلى قيمة لا يمكن تحليلها
وأخيرا، انظر إلى السيناريو الآخر - حيث TryParse() يتم إعطاء قيمة سيئة عن قصد لا يمكن تحويلها إلى int.
تعديل السطر الأول من التعليمات البرمجية، وإعادة تهيئة المتغير
valueإلى قيمة مختلفة.string value = "bad";أيضاً، تعديل السطر الأخير من التعليمات البرمجية للتأكد من أن النتيجة أكبر من 0 قبل عرض الرسالة الثانية.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");يجب أن يتطابق مثال التعليمات البرمجية بالكامل الآن مع التعليمات البرمجية التالية:
string value = "bad"; int result = 0; if (int.TryParse(value, out result)) { Console.WriteLine($"Measurement: {result}"); } else { Console.WriteLine("Unable to report the measurement."); } if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");احفظ ملف التعليمات البرمجية، ثم استخدم Visual Studio Code لتشغيل التعليمات البرمجية الخاصة بك. يجب أن تحصل على النتيجة التالية:
Unable to report the measurement.فحص آخر سطرين من التعليمات البرمجية المضافة في العينة السابقة.
if (result > 0) Console.WriteLine($"Measurement (w/ offset): {50 + result}");نظرا لأنه
resultتم تعريفه خارج العبارةif،resultيمكن الوصول إليه لاحقا في التعليمات البرمجية الخاصة بك خارج كتل التعليمات البرمجية.resultلذلك يمكن التحقق من قيمة أكبر من الصفر قبل السماح بكتابةresult+ إزاحة كإخراج. يؤدي التحقق من قيمةresultأكبر من الصفر إلى تجنب طباعة قيمة إزاحةUnable to report the measurement.بعد الرسالة.
خلاصة
الأسلوب TryParse() هو أداة قيمة. إليك بعض الأفكار السريعة التي يجب تذكرها.
- استخدم
TryParse()عند تحويل سلسلة إلى نوع بيانات رقمية. - يعمل
TryParse()على إرجاعtrueإذا كان التحويل ناجحًا، وfalseإذا لم يكن ناجحًا. - توفر المعلمات الصادرة وسيلة ثانوية لأسلوب يرجع قيمة. في هذه الحالة، ترجع المعلمة
outالقيمة المحولة. - استخدم الكلمة الأساسية
outعند تمرير وسيطة إلى أسلوب قام بتعريف معلمةout.
اختبر معلوماتك
الملاحظات
هل كانت هذه الصفحة مفيدة؟
لا
هل تحتاج إلى مساعدة مع هذا الموضوع؟
هل تريد محاولة استخدام Ask Learn لتوضيح هذا الموضوع أو إرشادك خلاله؟