متد Remove و RemoveAt
نام دوره: زبان سی شارپ مقدماتی
نویسنده: علی مقدم جاه (مدرس دوره)
تفاوت متد متد Remove و RemoveAt در کالکشن ها چیست؟
دو متد Remove و RemoveAt، وظیفه حذف یک خانه در حافظه را برای تمامی کلاسهای داخل کالکشنهای جنریک و غیر جنریک برعهده دارند.
همانطور که در پست آموزش متد Add آموختید، پس از تعریف کالکشن خود، باید با استفاده از متد Add برای آن مجموعه در حافظه خانهای را دریافت کنید:
ArrayList list1 = new ArrayList();
list1.Add("Ali");
list1.Add("Moghaddam");
list1.Add("Jah");
با توجه به مثال بالا، مجموعهای به نام list1 از نوع ArrayList تعریف کردیم و سپس با استفاده از متد Add، سه خانه برای آن با مقادیر “Jah”، “Moghaddam” و “Ali” از حافظه دریافت کردیم و مقداردهی آنان را انجام دادیم.
اَندیس خانههای فوق نیز به شکل زیر است:
"Ali" اَندیس صفر
"Moghaddam" اَندیس یک
"Jah" اَندیس دو
حال اگر بخواهیم خانهای که را که مقدار “Ali” در آن ذخیره شده حذف کنیم، میتوانیم از دو روش زیر استفاده کنیم:
روش اول: متد Remove: حذف با استفاده از مقدار ذخیره شده
list1.Remove("Ali");
با استفاده از دستور بالا، خانهای که مقدار “Ali” در آن ذخیره شده بود، برای همیشه پاک شده و به همین علت اَندیس خانههای این مجموعه برای مابقی خانهها reset شده تغییر میکند.
اَندیس خانههای مجموعه قبل از حذف خانه “Ali”:
"Ali" اندیس صفر
"Moghaddam" اندیس یک
"Jah" اندیس دو
اَندیس خانههای مجموعه بعد از حذف خانه “Ali”:
"Moghaddam" اندیس صفر
"Jah" اندیس یک
درنتیجه به این نکته توجه داشته باشید که اَندیس خانهها در تمامی کالکشنها بصورت ثابت باقی نخواهند ماند.
روش دوم: متد RemoveAt: حذف با استفاده از شماره اَندیس خانه
list1.RemoveAt(0);
با استفاده از دستور بالا، خانهای که مقدار “Ali” در آن ذخیره بود، برای همیشه پاک شده و به همین علت اَندیس خانههای این مجموعه برای مابقی خانهها تغییر میکند.
اَندیس خانههای مجموعه قبل از حذف خانه “Ali”:
"Ali" اندیس صفر
"Moghaddam" اندیس یک
"Jah" اندیس دو
اَندیس خانههای مجموعه بعد از حذف خانه “Ali”:
"Moghaddam" اندیس صفر
"Jah" اندیس یک
جهت شرکت در دورههای زبان برنامه نویسی سیشارپ، از کد تخفیف heplc30 استفاده کنید.