PDA

View Full Version : سوال: خالی شدن یک لیست در هنگام خالی کردن لیستی دیگر



hamed jalili
شنبه 26 شهریور 1390, 18:38 عصر
سلام دوستان

من دو لیست به صورت زیر تعریف می کنم



private List<Point> PP = new List<Point>();
private List<List<Point>> MPO = new List<List<Point>>();


بعد در جایی از برنامه این کار رو انجام می دهم :



MPO.Add(PP);
PP.Clear();


در اینجا اصولا MPO در اندیس جاری باید داری مقدار های قبلی PP باشد ، در صورتی که بعد از اجرای دستور دوم ، MPO هم کاملا خالی میشه . و وقتی دوباره دستور اول رو اجرا می کنم ، این بار به جای اضافه شدن یک PP به MPO دو PP به MPO با مقادیر یکسان اضافه میشه !!!

کسی از دوستان راه حلی برای این مشکل سراغ داره ؟

gwbasic
شنبه 26 شهریور 1390, 19:24 عصر
این مسئله با مفهوم Reference Type کاملا قابل توجیه هست. شما وقتی pp رو clear می کنید یعنی پاک می شه بنابراین MPO هم کا دارای یک آیتم PP هست ، این آیتم وجود داره ولی به چیزی اشاره نمی کنه یعنی به عبارتی شما جای دیگه Referenc اون رو پاک کردین و حالا اگه جای دیگه به PP آیتمی اضافه کنید توی MPO هم هست
البته اگه جای دیگه ای PP رو دوباره new کنید دیگه هرچی بهش اضافه کنید از طریق MPO و اون آیتمی که قبلا اضافه کردید دسترسی نخواهید داشت. اینا همه به مفهوم reference type بر می گرده

hamed jalili
شنبه 26 شهریور 1390, 19:51 عصر
من این مشکل با انجام جایگزینی زیر حل کردم ( دستور 1 با 2 ) ( همانطور که شما هر اشاره کردین )




PP.Clear();
PP = new List<Point>();



ولی قبل از انجام این کار ، سعی کردم از Copy استفاده کنم ، یعنی کل PP رو در یک اندیس خاص از MPO کپی کنم ولی نتونست این کار رو انجام بدم .
شما می دونید چه طور میشه این کارو کرد ؟