בפרק הקודם הכרנו את nameof, בפרק היום נלמד על Interpolated Strings.

    כשלומדים פיתוח תוכנה בדרך כלל מבקשים מהתלמידים להגדיר משתנה מסוג מחרוזת ומסוג תאריך ולהדפיס שרשור של טקסט על המסך, לרוב התוצאה נראית כך:

    Code Snippet
    string name = "shlomo";
    DateTime date = DateTime.Now;

    string res = "my name is " + name + " and my birthdate is " + date.ToString("dd/MM/yyyy hh:mm");
    Console.WriteLine(res);

    בשלב הזה אנחנו מלמדים את התלמידים על string.format, ומציגים להם את הקוד הבא

    Code Snippet
    string name = "shlomo";
    DateTime date = DateTime.Now;

    string res = string.Format("my name is {0} and ny birthdate {1:dd/MM/yyyy hh:mm}", name, date);
    Console.WriteLine(res);

    מהיום נתרגל להגיד Interpolated Strings, הרעיון הבסיסי מאחורי המילה המוזרה הזו (לא מתגלגל טוב על הלשון…) הוא שנוכל לכתוב את כל המחרוזת ברצף כך שהקריאות לא תפגע, הקוד יראה כך:

    Code Snippet
    string name = "shlomo";
    DateTime date = DateTime.Now;

    string res = $"my name is {name} and my birthdate {date:dd/MM/yyyy hh:mm}";
    Console.WriteLine(res);

    במקום להכניס בסוגריים מספרים, ולאחר מכן לנסות לנחש מה הערך הנכון לכל אחד, נכניס בסוגריים ישר את המשתנים הרלונטיים, אך לא נצטרך לשרשר אותם כך שהקריאות לא תיפגע.

    בנוסף להגדרת משתנה מסוג string, ניתן להכניס לתוך שני סוגים שונים, אחד IFormattable והשני FormattableString, הכנסה המחרוזת (עם סימון ה $) לתוך משתנה מסוג IFormattable, מאפשר לקבל מחרוזת שונה בכל פעם, מכיוון שבשונה מ – string.format שבזמן הרצת השורה מחזיר מחרוזת, IFormattable מחזיר מחרוזת רק בקריאה ל – ToString, ולכן נוכל לכתוב קוד כזה

    Code Snippet
    string name = "shlomo";
    DateTime date = DateTime.Now;

    IFormattable formatStrgin = $"my name is {name} and my birthdate {date}";
    string english = formatStrgin.ToString(null, CultureInfo.GetCultureInfo("en-US"));
    string hebrew = formatStrgin.ToString(null, CultureInfo.GetCultureInfo("he-IL"));

    אופציה נוספת היא להכניס את הערך לתוך משתנה מסוג FormattableString, זה ייתן לנו משהו שבעבר היינו מאוד נצרכים אליו, בעזרת המשתנה הזה נוכל לקבל בחזרה את המשתנים המקוריים שבונים את המחרוזת

    Code Snippet
    string name = "shlomo";
    DateTime date = DateTime.Now;

    FormattableString formatStrgin = $"my name is {name} and my birthdate {date}";

    המשתנה מסוג FormattableString מכיל את הפונקציות הבאות

    • ArgumentCount – מחזיר את מספר הפרמטרים במחרוזת
    • Format – מחזיר את המחרוזת עצמה
    • GetArgument – מקבל מיקום ומחזיר את האובייקט (כל דבר, DateTime, string, Person מה שקיים במיקום הרלוונטי)
    • GetArguments – מחזיר מערך של object כך שנקבל את כל הפרמטרים ברשימה