ברוכים הבאים נחפפים!
קודם כל מה שלומכם? מה נשמע? האם אתם מוכנים להיות המאסטרים החדשים של סי שארפ? התשובה לכל השאלות הוא היא כמובן - כן! ועכשיו, בואו ניגש לעבודה.
תכנות מתקדם בסיסי
ראשית, נעבור על המדריכים המצויים באתר, על כל נושא אצרף שאלות מנחות על מנת שתוכלו לוודא הבנתכם את החומר.
- הפניות לפונקציות - לינק
- מהו דלגייט ומה הוא תפקידו העיקרי?
הצג תשובה
דלגייט הוא סוג נתונים מיוחד המאפשר להחזיק הפניה לפונקציה. תפקידו העיקרי הוא לאפשר גמישות רבה יותר בתכנות, כגון:- העברת התנהגות כפרמטר לפונקציות אחרות.
- יצירת אירועים המאפשרים תקשורת בין אובייקטים שונים.
- שימוש בפונקציות אנונימיות וביטויי למבדה.
"דלגייט ב-C# הוא סוג נתונים מיוחד המאפשר להחזיק הפניה לפונקציה. כך, [...] נוכל להשתמש במשתנה מסוג דלגייט כמו כל משתנה, ואפילו להכניסו כפרמטר לפונקצייה." - הסבר את ההבדל בין פונקציה אנונימית לביטוי למבדה?
הצג תשובה
- פונקציה אנונימית היא פונקציה שאינה קשורה לשם ספציפי, ומוגדרת במקום בו היא נדרשת. היא מספקת דרך ליצור פונקציות קטנות ופשוטות ללא הצורך בהגדרה נפרדת.
- ביטוי למבדה הוא סינטקס מקוצר לפונקציה אנונימית. הוא מאפשר לכתוב פונקציות פשוטות בצורה קומפקטית יותר.
"אבל זה לא הסוף, נוכל לצמצם עוד יותר את כתיבת הפונקצייה האנונימית על ידי ביטויי למבדה, שהינם דרך מקוצרת לרשום פונקצייה אנונימית." - מהו תפקידו של אירוע והקשר שלו לדלגייט?
הצג תשובה
אירוע הוא מנגנון המאפשר לאובייקט אחד להודיע לאובייקטים אחרים על התרחשות של פעולה מסוימת. אירוע מבוסס על דלגייט, כאשר הדלגייט מחזיק את רשימת הפונקציות שיופעלו כאשר האירוע יתרחש.
"השימוש העיקרי של יכולת הזנת מספר הפניות פונקצייה לאותו המשתנה הוא ליצור דפוס של אירועים, ומה צריך להיעשות במידה והם קורים." - מה ההבדל העיקרי בין
Action
ל-Func
ומהן תרחישים אופייניים לשימוש בכל אחד מהם?הצג תשובה
Action
ו-Func
הם שני דלגייטים מוגדרים מראש המשמשים להחזקת הפניות לפונקציות. ההבדל העיקרי ביניהם טמון בסוג הערך שהם מחזירים:Action
: מייצג פונקציה שאינה מחזירה ערך (void
). הוא משמש בדרך כלל להגדרת פעולות שצריך לבצע, כמו למשל:- אירועים: הרשמה לפונקציות שיתבצעו כאשר אירוע מסוים יתרחש.
- פעולות אסינכרוניות: ביצוע פעולות ברקע מבלי לחכות להשלמתן.
Func
: מייצג פונקציה המחזירה ערך מסוים. הוא משמש בדרך כלל להגדרת חישובים או טרנספורמציות על נתונים, כמו למשל:- פילטרים: סינון רשימות על בסיס קריטריון מסוים.
- מיפוי: שינוי ערכי אוסף על פי פונקציה מסוימת.
- מהו דלגייט ומה הוא תפקידו העיקרי?
- תכנות אסינכרוני - לינק
- מה ההבדל העיקרי בין תכנות סנכרוני לתכנות אסינכרוני?
הצג תשובה
תכנות סנכרוני מבצע משימות באופן סדרתי, אחת אחרי השנייה, בעוד תכנות אסינכרוני מאפשר לבצע מספר משימות במקביל או בו זמנית. תכנות אסינכרוני משפר את ביצועי התוכנית, במיוחד במשימות I/O כמו קריאה לכתיבה לקבצים או לרשת.
"כמו העובד במסעדה, גם המעבד שלנו נמצא בסיטואציה שבה הוא צריך לבצע מספר משימות בו זמנית. לדוגמא, אלחץ על כפתור להורדת שיר, אך תוך כדי שהשיר בתהליך הורדה, ארצה גם להמשיך להסתכל על סרטונים ביוטיוב." - הסבר את המושג "
Task
" (משימה) בקשר לתכנות אסינכרוני. מה היתרון בשימוש ב-Task
לעומת יצירת תהליכונים (Threads
) ישירות?הצג תשובה
Task
מייצג יחידת עבודה עצמאית שיכולה להתבצע במקביל למשימות אחרות. היתרון העיקרי שלTasks
הוא בכך שהם מספקים מנגנון ניהול משימות מתקדם יותר, כולל יכולות כמו המתנה לתוצאות, ביטול משימות, וניהול שגיאות. בנוסף, מנוע המשימות מטפל ביעילות בחלוקת המשאבים בין המשימות השונות. - מהי המילה השמורה
async
ומה תפקידה בקוד אסינכרוני?הצג תשובה
המילה השמורהasync
מציינת שפונקציה היא אסינכרונית, כלומר היא יכולה להשהות את ביצועה ולהמשיך ברגע שתוצאה של פעולה אסינכרונית אחרת שלה היא פנתה תהיה זמינה. היא מאפשרת כתיבת קוד אסינכרוני בצורה סינכרונית יותר, תוך שימוש במילה השמורהawait
.
"על מנת להשתמש במילת הקודawait
, נדרש להגדיר מראש שהקוד שנריץ הוא אסינכרוני. זאת עקב השוני עבור סביבת סי שארפ שבהרצת פעולה שיכולה לעבור בין כמה מעבדים לוגיים, אל בין פעולה רגילה שתעבוד בצורה סנכרונית על מעבד לוגי אחד." - הסבר את ההבדל בין
await
ו-wait()
. מתי עדיף להשתמש ב-await
?הצג תשובה
await
משמשת להשהיית ביצוע הקוד עד שמשימה מסוימת תושלם, אך מאפשרת למעבד הלוגי לטפל במשימות אחרות בזמן ההמתנה.wait()
גורמת לThread
הנוכחי להמתין שהמשימה תושלם, מה שעלול להשפיע על ביצועי התוכנית. עדיף להשתמש ב-await
מכיוון שהוא מספק גישה יותר יעילה ואלגנטית לניהול משימות אסינכרוניות.
"אמנם שתי הפעולות עוצרות את ביצוע הקוד עד שמשימה מסויימת ששלחנו תתבצע. אך יש בניהם הבדל מהותי. בעוד שכאשר נשתמש בawait
על מנת להשהות את הקוד המעבד הלוגי יתפנה לבצע משימות אחרות, כשנשתמש בwait()
המעבד הלוגי יחסם ולא יותר לשימוש אחר עד שהמשימה הסתיימה."
- מה ההבדל העיקרי בין תכנות סנכרוני לתכנות אסינכרוני?
- בטיחות נאל - לינק
- מה ההבדל בין משתנה מסוג
string
למשתנה מסוגstring?
מתי נעדיף להשתמש בכל אחד מהם?הצג תשובה
string
: מייצג מחרוזת שאינה יכולה להיותnull
. כלומר, תמיד חייב להיות לה ערך כלשהו.?string
: מייצג מחרוזת שיכולה להיותnull
, כלומר היא יכולה להכיל ערך או להיות ריקה.
מתי נשתמש?string
: כאשר אנו בטוחים שמשתנה תמיד יכיל ערך, כמו שמות, כותרות וכו'.?string
: כאשר ישנה אפשרות שהמשתנה לא יכיל ערך, כמו למשל כאשר מקבלים קלט ממשתמש או כאשר עובדים עם נתונים שמקורם במאגרי מידע חיצוניים.
- הסבר את התפקיד של האופרטורים הבאים בקשר לבטיחות נאל:
?[], ?., ??, ??=, !,![]
.הצג תשובה
?[]
: מאפשר גישה למערך או לרשימה בצורה בטוחה. מחזירnull
אם המערך הואnull
.?.
: מאפשר גישה למאפיין של אובייקט בצורה בטוחה, ומחזירnull
אם האובייקט הואnull
.??
: מאפשר להחזיר ערך ברירת מחדל אם הביטוי משמאל הואnull
.??=
: מקצה ערך למשתנה משמאל רק אם ערכו הנוכחי הואnull
.!
: מדכא את אזהרת בטיחות הנאל, אך יש להשתמש בו בזהירות שכן הוא עלול לגרום לשגיאות זמן ריצה אם הביטוי הוא אכןnull
.![]
: גרסה של!
לגישה למערך.
- מה ההבדל בין משתנה מסוג
- ניהול שגיאות - לינק
- מה ההבדל בין העלאת שגיאה (
throw
) לבין תפיסת שגיאה (try-catch
) ?הצג תשובה
- העלאת שגיאה (
throw
): משמשת לסימון מצב חריג בתוכנית, ומפסיקה את ביצוע הקוד הנוכחי ומעבירה את השליטה לבלוקcatch
המתאים. - תפיסת שגיאה (
try-catch
): משמשת לטיפול בשגיאות שעלולות להתרחש בבלוק ה-try
. אם שגיאה מתרחשת, הביצוע עובר לבלוק ה-catch
המתאים, שם ניתן לטפל בשגיאה ולהמשיך בביצוע התוכנית.
- העלאת שגיאה (
- הסבר את התפקיד של המאפיין
InnerException
באובייקט השגיאה.הצג תשובה
המאפייןInnerException
משמש לאחסון שגיאה פנימית שהובילה לשגיאה הנוכחית. זה מאפשר לבנות "שרשרת" של שגיאות, כאשר כל שגיאה מצביעה על השגיאה שהביאה ליצירתה. - מה היתרונות של שימוש בסוגי שגיאות ספציפיים במקום בשגיאה כללית?
הצג תשובה
- טיפול מותאם: ניתן לתפוס סוגי שגיאות שונים ולטפל בכל אחד מהם באופן שונה.
- אבחון טוב יותר: שגיאות ספציפיות מספקות מידע מפורט יותר על הסיבה לשגיאה, מהמקל על איתור ופתרון הבעיה.
- קוד ברור יותר: שימוש בסוגי שגיאות ספציפיים משפר את קריאות הקוד ומקל על הבנת התנהגות התוכנית.
- הרחב באינטרנט וענה: מה הוא התפקיד של בלוק ה-
finally
. מתי כדאי להשתמש בו?הצג תשובה
בלוק ה-finally
מבטיח שהקוד שבתוכו יבוצע תמיד, בין אם התרחשה שגיאה ובין אם לא. זה שימושי למשימות ניקיון, כגון סגירת קבצים או שחרור משאבים, שצריך לבצע גם אם התוכנית נתקלת בשגיאה.
כדאי להשתמש בו כאשר יש צורך לבצע פעולות ניקיון או שחרור משאבים, ללא קשר לתוצאת הביצוע של הבלוק ה-try
. ניתן להשתמש בו גם ללא תפיסת כל שגיאה. וזה הרגל טוב להשתמש בו כשנרצה לבצע משימת נקיון לאחר שימוש במשאבים. מאחורי הקלעיםusing
הוא קיצור דרך המבצע בדיוק את זה.
- מה ההבדל בין העלאת שגיאה (
אין תגובות:
הוסף רשומת תגובה