נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: שליחה והחזרה של אבייקטים לפונקציה ב c#

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
רובי
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 14 May 2010 בשעה 13:52 | IP רשוּם
ציטוט רובי

אני צריך עזרה לעשות קצת סדר בבלגן.

אם מישהו יוכל להסביר לי מה קורה במצבים האלו. אני מרגיש שאני כותב קוד בלי שאני ממש מבין מה קורה. 

1. קודם כל בשליחה לפונקציה, כאשר אני שולח אובייקט למשל bitmap לפונקציה ומשנה אותו בתוך הפונקציה, האם אני ממש משנה את האובייקט או העתק שלו ? ואיך אפשר לבחור בין המצבים ?


2. לגבי החזרות מפונקציה, כאשר אני מחזיר מערך של אובייקטים, למשל פונקציה  getArrey שתחזיר bitmap[], אני כותב זאת כך :

bitmap[] temp;
temp = getArrey

מה בדיוק קורה שם ? זה חוקי ? זה מקובל ? איך temp מקבל מערך אם לא השתמשתי ב new ואיך אמורים לעשות את זה כמו שצריך ?
האם ניתן כך לבצע השוואת מערכים גם בלי קשר לפונקציות או שצריך לולאה שעוברת איבר איבר ומעתיקה ?

3. שינוי אובייקט גלובלי בפונקציה. אם הגדרתי אובייקט כ public בתוכנית,
public bitmap mainPic
ועכשיו אני משנה אותו בתוך פונקציה בעזרת new כך :
mainPic=new bitmap

הנתונים נשמרים כי הוא public ? כי לפי מה שאני מבין השינוי צריך להישמר רק בתוך הפונקציה.
ושוב האם זה חוקי /מקובל ? האם יש חשיבות אם הגדרתי את mainPic כ new bitmap מחוץ לפונקציה לפני השליחה ?


תודה רבה למי שיעזור לי לעשות סדר בנושא.
חזרה לתחילת העמוד הצג את כרטיס החבר של רובי חפש הודעות אחרות של רובי בקר בדף הבית של רובי
 
לשדג
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 15 May 2010 בשעה 11:00 | IP רשוּם
ציטוט לשדג

1 - אובייקט - הכוונה שזה משתנה שמצביע לגוש של מידע.

כשאתה מעביר אותו לפונקציה נוצר משתנה חדש מאותו סוג שמצביע לאותו מקום ולכן כשאתה משנה תכונות שלו וכו' הן משתנות גם באובייקט המקורי.

יש אובייקטים שניתן לשכפל ממש ע"י שימוש בפונקציה Clone (שקיימת אם המחלקה של האובייקט יורשת מ-IClonable).

2 - זה הגיוני כי הפונקציה getArray עושה new ולכן אתה לא צריך לעשות - ראה מה זה אובייקט בתשובה 1.

3 - המילה public לא אומרת שמשתנה הוא גלובאלי - היא אומרת שאנשים שיוצרים אובייקט של המחלקה שאתה כותב יוכלו לגשת גם הם למשתנה הזה.

כל משתנה  שמוגדר מחוץ לפונקציה הוא "גלובאלי" (גלובאלי בתוך המחלקה, הכוונה שמשתמר בין קריאות לפונקציות שונות וכו').

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 16 May 2010 בשעה 20:59 | IP רשוּם
ציטוט רובי

תודה רבה על התשובה המפורטת

חזרה לתחילת העמוד הצג את כרטיס החבר של רובי חפש הודעות אחרות של רובי בקר בדף הבית של רובי
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה