אחרי חודש אינטסיבי בכתיבת פוסטים, עברו עלי שבועיים של חוסר פוסטים בכלל. הסיבה היא שהחלק הראשון של השבועיים הללו עבר בהכנה לחופשה, ובנסיון לסגור כמה שיותר קצוות בפרוייקטים שלי, והחלק השני עבר עלי במנוחה. כעת נראה אם אצליח לחזור לבלוגי האהוב בקצב סביר 🙂
הרבה פעמים כשאנחנו עושים debug, אנחנו עוצרים ב-breakpoint כדי לראות ערכים של משתנים שמעניינים אותנו. לרוב, כשמגיעים ל-breakpoint, אנחנו עומדים עם העכבר מעל המשתנה, ואז מקבלים חלון צף עם הערך של המשתנה. זה מאד קל כשהמשתנה הוא מסוג int או double. אבל אם יש לנו אובייקט – או יותר גרוע, רשימת אובייקטים – אז החלונית הצפה רק תאמר לנו כמה איברים יש ברשימה, ואיזה סוג אובייקט זה. זה לא ממש מעניין (אנחנו בד”כ כבר יודעים את זה…), ואםרוצים לקבל עוד מידע, צריך ללחוץ על עוד ועוד פלוסים.
הפתרון הפשוט הוא ליישם מקומית באובייקט את ToString, כך שיראת את השדות העיקריים של האובייקט, ואז המידע הזה יופיע כבר בחלונית הצפה. אבל יותר יעיל יהיה אם נוכל לקנפג את הקוד כך שהדיבגר יראה את המידע הזה בלי קשר ל-ToString, ונוכל לשמור את היישום של ToString לתצוגת UI אחרת.
לשם כך יש את המאפיין DebuggerDisplay. כששמים אותו מעל הגדרת המחלקה, ואומרים לו אילו שדות להראות, אז אפשר שוב לראות אותם בחלונית הצפה, בלי שנגע באימפלמנטציה של ToString (שיתכן שאנו צריכים אותה לצורך אחר).
קראתי כאן על השימוש ב-DebuggerDisplay, יש הסבר נרחב עם צילומי מסך, ועם הפניה לשימוש נבון במאפיין הזה (כי הוא עלול לגרום לשימוש מופרז במשאבי מערכת).
ואם כבר הזכרנו את ()ToString, יש לי עוד שתי הפניות בנושא.
הראשונה היא סרטון יוטיוב שמסביר את ההבדל בין ()ToString ל-Convert.ToString (הסרטון הוא במסגרת סדרת סרטונים שעונים על שאלות נפוצות שמתכנתים נשאלים בראיונות). בתמצות, הסרטון אומר שההבדל ביניהם הוא ש-Convert.ToString מטפל ב-null, ו-()ToString איינו מטפל בזה.
והשניה היא פוסט שמעמיק יותר בהבנה של Convert.ToString. מחבר הפוסט מספר שמבחינתו ההבדל הזה לא מעניין כי בד”כ כשהוא צריך ייצוג מחרוזתי, זה שם אובייקט מסוג value type ולא reference type, כך שהעניין של null הוא חסר משמעות. ולכן הוא ממשיך לחקור את ההבדלים בין שתי הפונקציות. קצר ומעניין.
מזל טוב על פוסט ה300!
כל הכבוד שהגעת מספר כזה גבוה!
אני מאחל לך עוד 300 פוסטים כאלה
אלרון
iDesignIt
תודה רבה על הפרגון
ועל האיחולים!
והתלהבתי מאד מהבלוג שלך – נעים ומרווח וברור! אני מאחלת לך בחזרה פוסטים מרובים ומוצלחים 🙂
כל הכבוד על הפוסטים המרתקים. קצר ולעניין!
תודה רבה!
אני שמחה שאת נהנית 🙂