نمایش نتایج 1 تا 3 از 3

نام تاپیک: خالی شدن یک لیست در هنگام خالی کردن لیستی دیگر

  1. #1

    خالی شدن یک لیست در هنگام خالی کردن لیستی دیگر

    سلام دوستان

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


    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 با مقادیر یکسان اضافه میشه !!!

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

  2. #2
    VIP آواتار gwbasic
    تاریخ عضویت
    دی 1348
    محل زندگی
    تهران
    سن
    38
    پست
    983

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

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

  3. #3

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

    من این مشکل با انجام جایگزینی زیر حل کردم ( دستور 1 با 2 ) ( همانطور که شما هر اشاره کردین )



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


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

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •