מה חדש ב-C# 6: פונקציה לקבלת שם המשתנה

פונקציה חדשה שנוספה לנו ב- C# 6 הוא הפונקציה nameOf, פונקציה זו מקבלת משתנה כפרמטר ומחזירה את שמו.

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

 

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

public void ThrowException(string myStr)
{
    if (myStr == null)
    {
        throw new ArgumentNullException("myStr");
    }
}

 

    

 

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

public void ThrowException(string name)
{
    if (myStr == null)
    {
        throw new ArgumentNullException("myStr");
    }
}

 

     

       

וכך נראית הדוגמא המתוקנת שמשתמשת בפונקציה החדשה nameOf

public void ThrowException(string myStr)
{
    if (myStr == null)
    {
        throw new ArgumentNullException(nameof(myStr));
    }
}

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

 

 

תגיות:

הוסף תגובה