מהטיפ הקודם, אפשר היה לחשוב שהמימוש של Default arguments values הוא ע”י יצירת מספיק Overloadים.
כלומר שאם נציין Default Values לפרמטרים שלנו, אז יווצרו הרבה מאוד Overloadים (באופן מדויק – 2 בחזקת מספר הפרמטרים שיש להם Default).
אם נפתח את הReflector על מה שכתבנו פעם קודמת:
|
|
עם הקריאה:
|
|
נראה את הקוד הבא:
|
|
כלומר,מה שקורה זה שהקומפיילר מכניס לנו את כל הערכים הדיפולטיים באופן Hard-Coded לפונקציה.
זו אחת הסיבות שהם צריכים להיות Compile-time, כי הם בעצם Constים שמוכנסים באופן דיפולטי לכל הפונקציות. (ראו גם טיפ מספר 14)
הסיבה שזה ככה, ולא עם הרבה מאוד Overloadים, זה כי המספר הOverloadים גדל בקצב אספוננציאלי, ולכן היה מנפח לנו את הDLL 😃
המשך יום דיפולטי טוב.