למה ב foreach

ש ב ו ז

New member
למה ב foreach

אי אפשר לרוץ על איברים by ref והאם ניתן (או כדאי) לעקוף את זה? תודה מראש.
 

ש ב ו ז

New member
מבחינה תפיסתית למה... ועוד שאלה

למה לא תומכים בהעברת משתנים BY VAL?
 

BitAngel

New member
אם המטרה שלך היא ..

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

מתכNET

New member
זה אוסף שלך? אני חושב שאתה יכול

לכתוב ENUMERAROR שלך שלאו דווקא מעתיק את כל האיברים אלא מביא את האיבר המקורי ואז אתה כן יכול לשנות.
 

Justin Angel

New member
קה פרובלמה מואי צ'יקיטה?

לא ניתן לשנות את מבנה האוסף במהלך שעוברים עליו בלולאת foreach. הסיבה היא שהתהליך שמבצע את המעבר על האלמנטים סומך על כך שהקשר בין האלמנט הנוכחי לאלמנט הבא לא ישתנה. אם הקשר ישתנה, ייתכן וכי מימושים מתקדמים יותר של מעבר על אלמנטים לא יעברו או יצרו לולאה אין-סופית. למשל עם נעבור ב-foreach בסיסי על אלמנט ואז נחליף בין האלמנט הנוכחי לאלמנט הבא ואז בחזרה ניכנס ללולאה אין-סופית. אם כן רוצים לשנות את האוסף בזמן שעוברים אליו, צריך להשתמש בלולאת while או לולאת for. קריאה נוספת בנושא: Question from .Net Tapuz forum: How to iterare over a collection and remove items from it?
 
למעלה