כולנו יודעים שאי אפשר לכתוב קוד כזה:
|
|
כלומר להגדיר משתנה בשם של Keyword.
האמת שזה לא מדויק, כי בC# 2.0/3.0 הוסיפו Keywordים חדשים (למשל yield, select, from, var ועוד), ולמען תאימות לאחור, חלק מהkeywordים, ביניהם החדשים גורמים לשגיאה רק אם משתמשים בהם בcontext הנכון.
למשל אין בעיה להגדיר משתנה בשם select כל עוד זה לא בscope של שאילתת LINQ:
|
|
משום מה לפעמים נתקלים במקרים בהם כן רוצים לתת למשתנה שם שמור, למשל בדוגמה הראשונה (למרות שתמיד עדיף לתת שם אחר 😃).
לפעמים גם רוצים לתת שם שהוא CLSCompliant, כלומר יעבוד גם בשפות netיות אחרות.
יש תמיכה בזה ברמת השפה:
נוכל לכתוב את הקוד הבא:
|
|
תוכלו לומר "יופי, הוספת תחילית @. יכולת להוסיף גם תחילית _".
אז זהו שיש לזה משמעות מעבר: אפשר לרשום למשל את הקוד הזה:
|
|
ואת הקוד הבא:
|
|
שימו לב שבשתי הפעמים בשורה אחת יש @ ובשנייה אין.
הקומפיילר מזהה את שני המשתנים כאותו משתנה.
הוכחה נוספת לכך היא שהקוד הבא לא מתקמפל:
|
|
גם בשגיאות ובwarning שאנחנו מקבלים הקומפיילר מסיר את ה@
|
|
The variable ‘int’ is assigned but its value is never used
באופן כללי אני ממליץ שלא לתת למשתנים שמות של מילים שמורות, אבל יש אנשים שאוהבים לעשות את זה. למשל, לקרוא לערך החזר של פונקציה @return. 😕
או לחלופין לתת לשם של משתנה/פרמטר את השם @event.