שניצל פורסם 2014 ביוני 11 Share פורסם 2014 ביוני 11 איך יש לך בהתחלה שני צמתים? כמה פעמים עשית new?אני לא שואל כמה משתנים או כמה מצביעים יש. אני שואל כמה אובייקטים יש. כל פעם שאתה עושה new - נוצר אובייקט חדש. קישור לתוכן שתף באתרים אחרים More sharing options...
bdoron פורסם 2014 ביוני 11 מחבר Share פורסם 2014 ביוני 11 אז יש לי אובייקט אחד בהתחלה ואחרי זה יש לי 2 אובייקטים, כל פעם שאני מוסיף איבר לרשימה אני לפני זה יוצר צומת חדשה קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 ביוני 11 Share פורסם 2014 ביוני 11 אוקי. בהתחלה יש לך אובייקט אחד בלבד. מה ה-next שלו? מה ה-data שלו? מה יקרה אם תנסה להדפיס את הרשימה ככה? קישור לתוכן שתף באתרים אחרים More sharing options...
bdoron פורסם 2014 ביוני 11 מחבר Share פורסם 2014 ביוני 11 בהתחלה בלי שאני מוסיף תוכל הnext של הhead הוא null אבל אז הלולאה לא אמורה לרוץ כי שמתי תנאי, תרוצי כל עוד temp שונה מnullזה אומר שהיא לא אמורה לרוץ... הלולאה אני מתכוון..והdata של הhead בהתחלה גם null כי לא הצבתי לתוכו אובייקט.. ואם אני אנסה להדפיס ברור שיגרור לי שגיאת ריצה, מאחר וhead בפעם הראשונה לא מכיל כלום קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 ביוני 11 Share פורסם 2014 ביוני 11 ה-head בהתחלה הוא לא null! עשית לו new! קישור לתוכן שתף באתרים אחרים More sharing options...
bdoron פורסם 2014 ביוני 11 מחבר Share פורסם 2014 ביוני 11 רגע רגע רגע , תעשו לי קצת סדר שאני יוצא אובייקט, אני עושה לו new הוא מקצה לאותו אובייקט זיכרון בheap זה אני יודע , אבל אם לא עדכנתי לתוכו כלום אז הוא null אין בו כלום.. כל אובייקט שאני יוצר ולא עדכנתי לתוכו ערכים, אני מתכוון רק הקצאתי לו זיכרון אז הוא מכיל null עד שאני מכניס לתוכו נתונים זה לא נכון ? קישור לתוכן שתף באתרים אחרים More sharing options...
QttP פורסם 2014 ביוני 11 Share פורסם 2014 ביוני 11 לא.אולי התת-אובייקטים שלא הם null, אבל ברגע שעשית new, האובייקט עצמו הוא לא null. קישור לתוכן שתף באתרים אחרים More sharing options...
bdoron פורסם 2014 ביוני 11 מחבר Share פורסם 2014 ביוני 11 אז מה יש בתוך האובייקט שהקצאתי לו זיכרון השניה? קישור לתוכן שתף באתרים אחרים More sharing options...
QttP פורסם 2014 ביוני 11 Share פורסם 2014 ביוני 11 ב#C אין סתם הקצאות זכרון בלי אתחול. כשאתה יוצר את האובייקט עם הבנאי ברירת המחדל, מה שיש בשדות שלו הוא מה שבנאי ברירת המחדל שלך עושה. קישור לתוכן שתף באתרים אחרים More sharing options...
bdoron פורסם 2014 ביוני 11 מחבר Share פורסם 2014 ביוני 11 אבל אם אני לא עשיתי בנאי למשל, ואני יודע שc# משתמש בבנאי הדיפולטי שלו ואז מה הוא שם באובייקט, במה הוא מאתחל אותו בדיוק? קישור לתוכן שתף באתרים אחרים More sharing options...
QttP פורסם 2014 ביוני 11 Share פורסם 2014 ביוני 11 בנאי ברירת המחדל קורא לבנאי ברירת המחדל של מחלקת האב, אם יש כזה, וכו'.אם בכל השרשרת אין בנאים כלל, תקבל אתחול "ריק" - כלומר הזכרון של האובייקט יאותחל, אך השדות לא יאותחלו ויישארו עם ערכי ברירת המחדל שלהם: null עבור כל מה שהוא reference type וערך ברירת המחדל לvalue types (לטיפוסים הבסיסיים זה לרוב 0). קישור לתוכן שתף באתרים אחרים More sharing options...
bdoron פורסם 2014 ביוני 11 מחבר Share פורסם 2014 ביוני 11 אז אם יצרתי אובייקט ובתוכו יש 2 פרמטרים מסוג string? זה אומר שהאובייקט מאותחל בדינאמי ו2 הפרמטרים הפנימיים מאותחלים באפס במקטע המחסנית?ומה ההבדל בין ריק לnull אף פעם לא הבנתי מה ההבדל... קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 ביוני 11 Share פורסם 2014 ביוני 11 אתה זורק פה כל מיני דברים לא קשורים לאוויר (מה קשורה המחסנית? מה זה "דינאמי"?) ומבלבל מונחים.למחלקה אין פרמטרים. פרמטרים (או ארגומנטים) זה מה שאתה מעביר לפונקציה. למחלקה יש שדות. כל שדה שלא שמת לא ערך כלשהו מאותחל לערך ברירת מחדל, כמו ש-qttp אמר. אם לדוגמה יש לך מחלקה שיש לה שני שדות מטיפוס string ועוד שדה מטיפוס int, אז כשתיצור מופע של המחלקה, ערכי המחרוזות של המופע הזה יהיו null, והערך של ה-int יהיה 0 - אלא אם תשים להם ערך אחר בבנאי.המחסנית בכלל לא קשורה כאן. המחסנית מחזיקה רק משתנים מקומיים. אם נגיד אתה עושה כזה דבר:MyClass x = new MyClass()אז המשתנה x מוגדר מקומית ונמצא על המחסנית, אבל הוא מצביע לאובייקט שנמצא ב-heap. קישור לתוכן שתף באתרים אחרים More sharing options...
bdoron פורסם 2014 ביוני 11 מחבר Share פורסם 2014 ביוני 11 מקטע הזיכרון הדינאמי זה הheap, ומקטע המחסנית זה הlocal איפה שמאוכסנים המשתנים הפרמיטיביםאני ממש לא מבלבל http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx- - - תגובה אוחדה: - - -אני חשבתי שקוראים למשתנים שהם value types פרמטרים... ולפי מה שאני קראתי משתנים של מחלקה נקראים members או fields קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2014 ביוני 11 Share פורסם 2014 ביוני 11 value type זה משתנים פרימיטיביים (ו-struct, אבל לא ניכנס לזה). זה לא קשור לפרמטרים של פונקציות - פרמטרים יכולים להיות value type או reference type.שדות של מחלקה אכן נקראים fields. המונח members כולל גם שדות וגם שיטות (methods) של המחלקה. קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.