בעיה ב-C#

lexter

New member
בעיה ב-C#

היי, קראתי מאמר על ההבדלים בין struct (מבנה) ל-class (מחלקה) ב-C#.. ועד כמה שהבנתי,במבנה אפשר להגדיר משתנים ולא לאתחל אותם (זאת אומרת,לא את כולם בעזרת הבונה) אז בניתי מבנה,ומשום מה אני לא מצליח לקמפל אותו.. הנה הקוד של המבנה:
public struct XY { public int x; public int y; public XY(int x) { this.x = x; } public XY(int x, int y) { this.x = x; this.y = y; } }​
תודה רבה!
 

nadav1974

New member
מה זה "לא מצליח לקמפל"?

איזה שגיאה יש ובאיזה שורה היא?
 

pintyo

New member
אאל"ט הבנאי חייב לאתחל את הכל

אם אני לא טועה, ברגע שיש בנאי, הוא חייב לאתחל את כל המשתנים, ז"א אם אתה רוצה לאתחל רק את X ע"י בנאי, תהיה חייב לקבוע default value עבור Y,:
public XY(int x) { this.x = x; this.y = 0; or some other default value }​
אפשרות נוספת תהיה לקבוע ש Y הוא מסוג nullable type (ז"א public int? y) במקרה זה גם תהיה חייב לאתחל ערך עבור Y אבל תוכל לשים שם null
 

lexter

New member
מוזר

במאמר הבא הכותב אמר שלא חובה לאתחל את כל המשתנים במבנה.. המאמר: http://www.developers.org.il/articles/csh/article11.asp וגם אני לא מבין, במחלקה משתנים שלא מאותחלים הם 0 באופן אוטומטי.. למה במבנה זה לא ככה? תודה.
 

מתכNET

New member
מה מוזר? המאמר מלא בשגיאים

ולא רק הקשורים לעברית....
 

ליאור ב

New member
I think

The error: Field 'CSharpScrap.Form2.XY.y' must be fully assigned before control leaves the constructor is self explanatory. You cannot leave the constructor before assigining all variables. Ask Nadav1974 if I'm not giving you answers he does not approve of.​
ליאור.
 
למעלה