אז אתה אומר ש SomeOtherMethod אמור להיות SomeOtherClass? ומתי יקרא הקונסטרקטור? ואיך זה משתלב עם מימוש המתודה? בכלליות אני יודע שהסימן ":" משמש להורדה כשמגדירים קלאסים, מה השימוש שלו כשמגדירים מתודה?
לפחות אצלי הסביבה נותנת שגיאה כשאני מנסה לעשות משהו כמו שכתבת:
Keyword 'this' or 'base' expected
כש-this יקרא לקונסטרקטור אחר של ה-class, ו-base יקרא לקונסטרקטור המתאים של ב-base class. אם זה עובד ומתקמפל לך, צרף קוד קצת יותר גדול בשביל להבין מה יש שם.
זה מה שגרם לי לשאול את השאלה, זה קטע קוד מתוך WSS 3.0 SDK
public EditMetadata(): base() { this.Init += new EventHandler(Page_Init); } private void Page_Init(object sender, System.EventArgs e) { ... //Add field control to the page control tree. }
אוקיי אז לפי מה שהבנתי מותר לקרוא רק לקונסטרקטורים של base ו this. נכון? מתי הקונסטרקטורים יפעלו? לפני הקוד? למה לקרוא להם בצורה כזאת ולא שפוט לקרוא להם מתוך גוף המתודה?
אבל בעיקרון זה תלוי מה בדיוק יש ב-constructors. אגב, תמיד ייקרא איזשהו constructor של ה-base. אם לא קוראים לו מפורשות, ייקרא ה-default constructor שלו, ואם ה-default constructor לא נגיש, יהיה error בזמן קומפילציה.