האם אפשר לקבל אפקט של מצביע בדוטנט ?
-
יש לי למשל מערך כזה:
Structure myStrc Dim A As Integer Dim B As Integer() End Structure Private mainArr(10)() As myStrc
בשלב ראשון אני עובר על עשרת האיברים של mainArr ובכל איבר אני שם מערך של myStrc שבכל myStrc יש ערך ל A אבל ה B בנתיים נשאר ריק
בשלב שני אני עובר שוב על כל mainArr ומכניס לליסט מסוג IList(Of T) כמה myStrc נבחרים על פי איזה התאמה.בשלב שלישי אני עובר שוב על mainArr ומגדיר את משתנה B שבכל myStrc
ומה שקורה זה ש myStrc שבתוך הליסט לא מתעדכן ומשתנה B נשאר ריק, אם הייתי עושה את זה ב C++ הוא היה מתעדכן כי הליסט היה מצביע myStrc שבתוך mainArr ולא מחזיק עותק של myStrc.
זה המקרה הדי מסובך שלי, אבל השאלה בקיצור איך אפשר במקרה כזה שהליסט יחזיק מצביע וברגע שאחד מאיברי ה mainArr ישתנה גם בליסט יראו את זה.
תודה לכולם.פורסם במקור בפורום CODE613 ב06/04/2014 09:14 (+03:00)
-
Structure עשוי להיות הפניה לפי ערך. השמה שלו היא למעשה העתקה, וממילא אין דרך להחזיק התייחסות אליו.
ייתכן שיש דרך ע"י מצביעים, אני לא בטוח, אבל בכל מקרה הנחיות בתכנות הם ש[u:dxpie7is]לא עושים בכזה מקרה Structure.[/u:dxpie7is]הנה הכללים (של מקרוסופט) מתי לעשות Structure, אני פשוט תרגמתי מפה Choosing Between Class and Struct:
[list:dxpie7is]- המבנה מייצג לוגית ערך בודד.
- סך הזיכרון של השדות עד 16 בתים.
- [u:dxpie7is]בלתי ניתן לשינוי[/u:dxpie7is] זה בשביל "למנוע אי הבנות ובאגים".
- לא אמור לעבור Boxing (המרה להתייחסות) לעיתים קרובות.
[/list:u:dxpie7is]
בכל מקרה אחר יש להשתמש במחלקה.
ראה גם: http://programmers.stackexchange.com/a/92369/112215פורסם במקור בפורום CODE613 ב06/04/2014 13:15 (+03:00)
-
בהתחלה עשיתי מחלקה אבל שמתי לב להאטה, עם מחלקה הפעולה מסתיימת בכפול זמן מאשר עם סטרוקטורה! כך זה בכל מקרה בקוד שלי כאשר השינוי היחיד הוא שבמקום Structure myStrc אני כותב Class myStrc
@דוד ל.ט.
ייתכן שיש דרך ע"י מצביעים, אני לא בטוח
ב C++ ברור שאפשר לעשות מצביע לכל מקום ולכל דבר, כי כל דבר שקיים בזיכרון יש לו כתובת ואת הכתובת הזו מחזיק המצביע.
טוב, אז אני אשנה את זה למחלקה כן יהיה אפשר להגיע לאפקט של מצביע בדוטנט?
פורסם במקור בפורום CODE613 ב06/04/2014 13:37 (+03:00)
-
את התכנון אני משפר בכל עת בלא קשר לנושא הנידון
זהו, שיש תכנון מצד העניין, ויש תכנון בגלל אילוצי השפה - "עם קשר" במקרה זה. ייתכן שהתכנון שלך טוב, ובכל אופן עליך "לשבש" אותו בשביל להפיק את המירב מדוט נט.
פורסם במקור בפורום CODE613 ב06/04/2014 14:15 (+03:00)