פורסם 2011 באוקטובר 1314 שנים יש לי תרגיל שבו יש לי כל מיני צורות שמורכבות מכמה פרמטים כמו נק' (X ו-Y) רדיוס למשל ו-ID לכל צורה אני אמור לכתוב קלאס שמחזיק את כל הצורות ב-SortedList.בשביל זה קודם כל יש לי את מתודת ה-ADD שהיא מוסיפה צורה ל-SortedList.קודם כל ב-MAIN אני יוצר צורות כמובן.עכשיו יש לי את הקלאס שאמור להחזיק את הצורות ב-SortedList public class Can { SortedList mSortedList; public Can(SortedList shortedList) { this.mSortedList = shortedList; } public void Add(Shape shape) { string[] split = shape.ToString().Split(new char[] { ' ' }); string shapeID = split[2]; this.mSortedList.Add(shape.id, shape); } }ב-MAIN אני רושם (אחרי שיצרתי אובייקטים של צורות): SortedList mySL = new SortedList(); Can can = new Can(mySL); can.Add(s1);S1 זו צורה אגב, הבעיה שלי היא במתודת ADD, איך שאני מריץ את התוכנית בשורה של ההוספת צורה:this.mSortedList.Add(shape.id, shape);אני מקבת את השגיאה Key cannot be null.Parameter name: keyאני לא מבין מה שאני אמור להכניס לשם, אני בעיקרון חילצתי את ה-ID של האובייקט המסויים שאני רוצה להכניס (סוג של String על מספרים) וזה נופל לי על השגיאה.
פורסם 2011 באוקטובר 1314 שנים מה לא ברור? הוא אומר לך ש-shape.id הוא null.שים לב שב-Add אתה יוצר את shapeID אבל אז לא משתמש בו.
פורסם 2011 באוקטובר 1314 שנים מחבר אוקיי תודה הסתדרתי, ועוד משהו קטן:המתודה Draw אמורה להדפיס את כל ה-SortedList, כשאני עושה ב-MAIN את הפקודה can.Draw לא מודפס לי כלום, אם אני בודק בדיבגר אני רואה שבמתודה Draw ב-SortedList קיימים כל האובייקטים שהכנסתי אבל למה זה לא מדפיס אותם ? public class Can { SortedList mSortedList; public Can(SortedList shortedList) { this.mSortedList = shortedList; } public void Add(Shape shape) { string[] split = shape.ToString().Split(new char[] { ' ' }); string shapeID = split[2]; this.mSortedList.Add(shapeID, shape); } public string Draw() { return this.mSortedList.ToString(); } }
פורסם 2011 באוקטובר 1314 שנים א. מי אמר ש-ToString של SortedList עושה מה שאתה מצפה ממנה לעשות?ב. אתה רק קורא ל-can.Draw, או שאתה גם מדפיס את התוצאה?נ.ב. אמרתי זאת בעבר ואומר זאת שוב - אין צורך להשתמש ב-this בשביל לגשת לאיברים פנימיים של המחלקה, אלא אם זה על מנת למנוע כפילות (כלומר אם יש משתנה מקומי באותו שם).
פורסם 2011 באוקטובר 1414 שנים מחבר גם כשאני רושם משהו כמו: string result = can.Draw(); Console.WriteLine(result);זה לא מדפיס לי, איך מדפיסים בכלל SortedList ?ניסיתי להסתכל קצת ב-MSDN ולא מצאתי משהו שעזר לי.
פורסם 2011 באוקטובר 1414 שנים מחבר אם אני רוצה להדפיס את ה-SHAPE הראשון (שלו יש ToString) שיש לי ב-SortedList, איך אני ניגש לאיבר הראשון ב-SortedList ?ניסיתי עם אחד ה-Properties שיש ל-SortedList אבל לא הצלחתי.
פורסם 2011 באוקטובר 1414 שנים http://msdn.microsoft.com/en-us/library/system.collections.sortedlist.aspxשים לב לדוגמאות.אגב, למה אתה משתמש ב-SortedList ולא ב-<SortedList<string, Shape (הגרסה הגנרית)?
פורסם 2011 באוקטובר 1414 שנים מחבר שיניתי קצת את ה-Class אבל עדיין לא מצליח לי העניין של ה-Draw, יש מצב שאתה לפחות מתחיל לרשום עלמנת שאני יבין יותר ? public class Can { SortedList<string, Shape> mSortedList; public void Add(string id, Shape shape) { mSortedList.Add(id, shape); } public string Draw() { } }
פורסם 2011 באוקטובר 1414 שנים שוב:http://msdn.microsoft.com/en-us/library/ms132319.aspxאת הדוגמאות קראת?
פורסם 2011 באוקטובר 1414 שנים את הדוגמה הזו ראית?foreach( KeyValuePair<int, string> kvp in mySortedList ) { Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);}
פורסם 2011 באוקטובר 1414 שנים מחבר תודה רבה, אגב למה ה-foreach מדפיס לי רק את ה-Shape הראשון ב-SortedList ולא את כולו ?כשאני רושם: public string Draw() { foreach (KeyValuePair<string, Shape> item in mSortedList) { return item.Value.ToString(); } }הוא מצפה לעוד החזרת ערך בסוף, מה אני אמור לרשום ?
פורסם 2011 באוקטובר 1414 שנים מה עושה return?כמה ערכים פונקציה יכולה להחזיר?מה קורה כשיש לך כמה פעמים return בתוך פונקציה?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.