עבור לתוכן

C# מחלקות

Featured Replies

פורסם

לא בדיוק הבנתי על המדריך. הזה

אפשר הסבר עם דוגמת קוד המסבירה

את זה?תודה.

9.5. Default Constructor

אם לא מגדירים עבור מחלקה כלשהי ב-C# פונקציה בונה, הקומפיילר מספק פונקציה בונה משלו כברירת מחדל. פונקציה זו, איננה מקבלת פרמטרים, ומאפסת את כל הערכים לאפס, את כל המשתנים הבוליאניים ל-false ואת כל האובייקטים ל-null.

פורסם

בוא נתחיל עם זה - אתה יודע להסביר לי מה זאת מחלקה ומה זה constructor?

פורסם
  • מחבר
בוא נתחיל עם זה - אתה יודע להסביר לי מה זאת מחלקה ומה זה constructor?

מחלקה זה משתנים ופונקציות

היוצרים אובייקט(מופעים)

constructor :

זה פונקצייה שתפקידה לאתחל

את האובייקט ברגע שהוא נוצר.

פורסם

אוקי, ומה קורה אם אתה מגדיר למחלקה constructor שלא מקבל פרמטרים, והתוכן שלו ריק? מה הבנאי הזה עושה?

פורסם
  • מחבר
אוקי, ומה קורה אם אתה מגדיר למחלקה constructor שלא מקבל פרמטרים, והתוכן שלו ריק? מה הבנאי הזה עושה?

נראה לי שהתשובה היא מה ששאלתי

בראש האשכול.

אבל לא הבנתי מהי הכוונה ב-

constructor

לאתחל את האובייקט ברגע שהוא

נוצר?

פורסם

ה-constructor שאתה כותב בד"כ, איך הוא נראה? כלומר, מה הוא עושה?

הוא אמור לשים ערכים בשדות שלך ואולי לעשות עוד כמה דברים. אם אין לך constructor אז הקומפיילר יוצר אחד בעצמו. מה הוא עושה? כלום.

אם הכרזת על שדה מטיפוס int, הוא כמובן ישא את הערך 0 (כי לא הגדרת אחרת. זהו ערך ברירת המחדל). באותו אופן משתנים מטיפוס boolean יקבלו false וכל טיפוס שאינו פרימיטיבי יאותחל ע"י constructor ברירת המחדל שלו.

פורסם
  • מחבר

אבל לא הבנתי מה הכוונה

פונקציה בונה היא פונקציה הנקראת ברגע שאובייקט חדש נוצר, ותפקידה הוא אתחול האובייקט.?

מה הכוונה אתחול?

פורסם

אתחול זה הגדרה ראשונית של האובייקט - לשים בשדות שלו (המשתנים שהגדרת עבורו) ערכים התחלתיים. כל שדה שלא ביצעת לו אתחול מאותחל באופן אוטומטי ע"י ערך ברירת מחדל, כמו שהוסבר בפסקה שציטטת.

פורסם

תסתכל על הדוגמה הבאה:

Complex c1 = new Complex();
Complex c2 = new Complex(2, -1);

יצרתי 2 משתנים מטיפוס מספר מרוכב. מה יש במשתנה c2? הבנאי של Complex מקבל כאן שני ארגומנטים - הערך הממשי והערך המדומה. את שני הערכים הוא שומר באופן כלשהו, תלוי איך המחלקה מממומשת.

ומה יש ב-c1? הבנאי לא מקבל ארגומנטים. בנאי כזה (יכולים להיות מספר בנאים למחלקה) עושה מה שקבעת לו במידה ולא הוכנסו ערכים לבנאי. הבנאי יכול להיות מממומש ככה:

public class Complex

{

private double re;

private double im;



public Complex()

{

re = 0;

im = 0;

}

}

ואז קבעת שמשתנה מטיפוס מספר מרוכב בברירת מחדל הוא 0+0i. אם לא היית מגדיר בנאי כזה (או שהיית מגדיר כזה ריק) אז הקומפיילר היה קובע ערכים למשתנים re ו-im. אילו ערכים? לכל טיפוס ערך ברירת מחדל משלו.

נערך על-ידי Gil28

פורסם
  • מחבר

אני רוצה ליצור בעצמי את הקוד

שמבוצע על עיקרון פונקצייה בונה

ולהריץ אותו בויזואל סטודיו.

אולי ככה אני יבין יותר.

איך עושים קוד כזה?

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים