תרגיל - בחינת שיטת 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() דומה זמינה בכל סוגי הנתונים המספריים.
פרמטרים לא זמינים
פעולות שירות יכולות להחזיר ערך או להחזיר "void" - כלומר, הן לא מחזירות ערך. פעולות שירות יכולות גם להחזיר ערכים באמצעות 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. המשתנהintresultמוכרז ו מאותחל לפני שורת קוד זו, כך שהוא אמור להיות נגיש הן בתוך והן אל בלוקי הקוד השייכים ל משפטי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 קובץ, בחר שמור. יש Program.cs הקובץ לפני בנייה או הפעלה של הקוד.
בלוח EXPLORER, כדי לפתוח מסוף במיקום התיקיה TestProject, לחץ באמצעות לחצן העכבר הימני על TestProjectולאחר מכן בחר פתח במסוף משולב. לוח מסוף אמור להיפתח, ועלי לכלול שורת פקודה המציגה שמסוף פתוח במיקום התיקיה TestProject שלך.
בשורת הפקודה Terminal, כדי להפעיל את הקוד, הקלד dotnet מכן הקש 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ארגומנט.
בדוק את הידע שלך
משוב
האם עמוד זה היה מועיל?
לא
זקוק לעזרה בנושא זה?
רוצה לנסות להשתמש ב'שאל את Learn' כדי להבהיר או להדריך אותך בנושא זה?