לפעמים היינו רוצים לכתוב קוד כזה:
|
|
למרבה הצער הקוד הזה לא מתקמפל ובטח גם לא עובד.
הסיבה לכך היא שאי אפשר להכריח Operator Overload בממשק. (ראו גם טיפ מספר 196)
עד Framework 4.0 לא היה אפשר לפתור את זה בצורה פשוטה.
כמו קריאות דינאמיות אחרות שכבר ראינו, יש תמיכה בDynamic לאופרטורים בינאריים:
נוכל לכתוב את הקוד הבא:
|
|
מה שקורה כאן, כרגיל, זה שבזמן ריצה מפוענחים הפרמטרים והקריאה לאופרטור.
הבעיה פה שזה ממש לא Compile safe, ולמשל הקוד הבא גם יתקמפל:
|
|
למרות שברור שזה לא אמור להתקמפל.
אפשר למנוע את זה ע"י שימוש בGenerics:
|
|
זה מונע מאיתנו לקרוא לפונקציה כאשר לא מתקיים ששני הפרמטרים וערך ההחזר שווים.
זה אמנם לא מכסה את כל המקרים הבעייתיים של קריאה לפונקציה, אבל מונע חלק נכבד מהם.
המשך יום דינאמי טוב