دوباره خوش آمدید.
در این ویدیو قراره به کلمه کلیدی **remove** (حذف کردن) نگاه کنیم، چون حالا می‌دونیم چطور آیتم‌ها رو به
**list** اضافه کنیم. اما چطور آیتم‌ها رو از **list** حذف کنیم؟
خب، متد **remove** وجود داره.
و بنابراین کاری که قراره انجام بدم اینه که از **colors list** ویدیوی قبلی خودم استفاده کنم.
و فقط می‌گم **colors.Remove**. اوکی.
پس این متد **remove** به من اجازه می‌ده که یک آیتم خاص رو داخل **list** خودم حذف کنم.
بنابراین اینجا دارم از کلمه کلیدی **remove** استفاده می‌کنم و به طور خاص دارم می‌گم که کدوم آیتم می‌خوام حذف بشه.
حالا در این مورد دارم از رشته **"red"** (قرمز) استفاده می‌کنم.
پس دقیقاً به همون شکل نوشته شده.
به همین دلیله که این **"red"** بعداً حذف خواهد شد.
پس بیاید به حلقه **foreach** خودمون نگاه کنیم.
پس من این حلقه **foreach** رو کپی کردم. و دوباره اینجا **paste** (جایگذاری) کردم تا بتونیم تفاوت رو ببینیم.
پس بیاید این رو اجرا کنیم و خواهیم دید: رنگ‌ها در **colors list**...
پس **red**، **blue** (آبی) و **green** (سبز). و بعد رنگ‌های فعلی در **colors list**: **blue** و **green**.
پس ما در واقع **red** رو حذف کردیم.
با این حال، بیاید به مثالی نگاه کنیم که **colors.Add** داریم.
و بعد یک **"red"** دیگه اینجا اضافه می‌کنیم، به این صورت.
حالا بیاید دوباره **list** رو اجرا کنیم و ببینیم چه اتفاقی می‌افته.
پس می‌بینید **red**، **blue**، **green**، **red** و بعد رنگ‌های فعلی در **list**: **blue**، **green**، **red**.
پس کاری که انجام داد این بود که اولین ورودی **"red"** رو داخل **list** حذف کرد.
تمام **"red"**های **list** رو حذف نکرد، پس فقط اولین نمونه (instance) از **"red"** رو حذف کرد.
و این واقعاً در مورد متد **remove** مهمه که بدونید.
پس می‌تونید نشانگر رو روش نگه دارید.
و می‌گه: "اولین وقوع یک **object** خاص رو از **list** حذف می‌کنه." اوکی.
و ضمناً، چیزی رو هم **return** (برمی‌گردونه) می‌کنه.
پس اگه می‌خواید ذخیره کنید که آیا تونسته اون رو حذف کنه یا نه، می‌تونید اون رو داخل یک **bool** ذخیره کنید، چون می‌گه: "در صورت حذف موفقیت‌آمیز آیتم، **true** برمی‌گرداند، در غیر این صورت **false**."
"این متد همچنین در صورتی که آیتم در **list** پیدا نشود، **false** برمی‌گرداند."
پس اگه ما مثلاً از **"red"** با حروف کوچک استفاده نکنیم، بلکه از **"Red"** با حرف بزرگ استفاده کنیم و دوباره این رو اجرا کنیم، اون وقت می‌بینیم **red**، **blue**، **green**، **red** و بعد هنوز **red**، **blue**، **green**، **red** رو می‌بینیم.
چون **"Red"** با حرف بزرگ...
پس **"Red"** با **R** بزرگ در **list** وجود نداره.
پس اون رو حذف نمی‌کنه.
اون نمی‌دونه.
خب سعی می‌کنه اون رو حذف کنه، اما **"Red"** با حرف بزرگ اونجا وجود نداره.
پس اگه بخواید اون رو در یک **boolean** ذخیره کنید، مثلاً بگید **bool deletingSuccessful** (حذف موفقیت‌آمیز)، یا می‌تونید بگید **isDeletingSuccessful**
برابر است با **colors.Remove("Red")** و بعد اون رو چاپ کنید، یا می‌خواید وضعیت اون رو ببینید که کجاست.
می‌تونید اینجا فقط از **debugging** (عیب‌یابی) استفاده کنید.
پس همه اون‌ها رو چاپ کرد.
و حالا در این مرحله **isDeletingSuccessful** روی **false** تنظیم شده.
حالا اگه به خط بعدی بریم خواهیم دید که هنوز **false** هست چون به طور پیش‌فرض **false** بوده.
پس هنگام ایجاد یک **bool**، به طور پیش‌فرض **false** هست.
اما حتی بعد از اینکه خط رو به طور کامل اجرا کردیم، می‌تونیم ببینیم که **isDeletingSuccessful** هنوز **false** هست.
و این باید یک **D** بزرگ باشه اگه بخوایم اینجا واقعاً دقیق باشیم.
پس بله، این تقریباً همون چیزیه که باید در مورد متد **remove** بدونید.
حالا نحوه حذف کردن رو می‌دونید، اما محدودیت‌های نحوه حذف آیتم‌ها از یک **list** داده شده رو هم می‌دونید.
خب، حالا اگه می‌خواستم تمام **"red"**ها رو از **array** خودم حذف کنم، چطور؟
چطور می‌تونستم این کار رو انجام بدم؟
خب، ویدیو رو متوقف کنید و خودتون امتحان کنید.
اوکی، پس امیدوارم امتحان کرده باشید.
و این اینجا راه حل هست. یا یک راه حل.
چندین راه حل وجود داره.
واضحاً من نمی‌خواستم که شما فقط این خط کد رو چندین بار اجرا کنید.
پس **colors.Remove("red")**. من نمی‌خواستم که شما فقط اون رو چهار بار یا هر چند بار بنویسید.
من می‌خواستم مطمئن بشم که شما فقط به همان تعداد که وجود داره، آیتم **"red"** رو حذف می‌کنید، و سعی نکنید بیشتر حذف کنید. پس کاری که الان داریم انجام می‌دیم اینه که این **boolean** رو ایجاد می‌کنیم: **isDeletingSuccessful** برابر است با **colors.Remove("red")**.
پس اگه بتونیم یک رنگ **red** رو حذف کنیم، اون وقت می‌گیم **isDeletingSuccessful**. پس قراره این رو دوباره یک بار اجرا کنه.
پس اول از همه قراره چک کنه: باشه. آیا **true** هست؟ تا زمانی که تونستیم یک آیتم رو حذف کنیم، فرض می‌کنیم که به طور بالقوه آیتم‌های بیشتری داریم. بنابراین ما می‌گیم **isDeletingSuccessful** برابر است با **colors.Remove**.
پس در اون صورت داریم یک آیتم دیگه رو حذف می‌کنیم. اگه یک آیتم دیگه وجود داشته باشه، اگه دیگه هیچ آیتمی وجود نداشته باشه، این **boolean** اینجا **false** خواهد بود.
بنابراین این حلقه **while** دیگه اجرا نخواهد شد.
پس این یک راه برای انجام اون هست.
حالا واضحاً راه حل‌های دیگه‌ای برای این مشکل وجود داره.
اما حالا بیاید این کد رو اجرا کنیم و می‌تونیم ببینیم: رنگ‌های فعلی در **colors list**: **red**، **blue**، **green**، **red** و بعد رنگ‌های فعلی در **colors list**: **blue** و **green**.
پس کاری که ما اینجا انجام دادیم اینه که از شر تمام رنگ‌های **red** داخل **colors list** خلاص شدیم.
پس ایده واقعاً اینه که به این طریق ما قادر هستیم یک آیتم خاص رو حذف کنیم، حتی اگه چندین بار وجود داشته باشه.
پس چندین نمونه از اون در **list** هست. ما از شر اون‌ها خلاص می‌شیم.
بسیار خب. پس برای این ویدیو کافیه.
شما رو در ویدیوی بعدی می‌بینم.