קטגוריות
C#

C# Discards עם פרמטר out

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

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

string dateAsString = "2020/01/20";
DateTime date;

bool isValidDate = DateTime.TryParse(dateAsString, out date);
Console.Write(isValidDate);	    //True

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

ב C# 7 הוסיפו את האפשרות להשתמש ב Discards, שהם משתנים זמניים שלא נשמר בהם ערך, הם לא תופסים מקום בזיכרון ולא צריך להגדיר אותם מראש.

כך שבמידה ואני אשתמש בדוגמה הקודמת, ואין לי צורך במשתנה מסוג DateTime לאחר בדיקת התקינות, אוכל להשתמש ב Discards ולכתוב את הקוד מהדוגמה הקודמת באופן נקי יותר כך:

string dateAsString = "2020/01/20";
bool isValidDate = DateTime.TryParse(dateAsString, out _);
Console.Write(isValidDate);	    //True

שימו לב שבמקום להגדיר משתנה מסוג DateTime ולשלוח אותו לפונקציה כ out parameter, בעזרת Discards אני שולח _ שלא מוגדר בקוד.

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

Console.Write(_);
//Compilation error: The name '_' does not exist in the current context
שתף:

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *