ในการลบองค์ประกอบที่ดัชนีเฉพาะของ Collection<T> ใน C# สามารถใช้เมธอด RemoveAt(index) ได้ โดยดัชนีเริ่มต้นที่ 0
ตัวอย่างที่ 1: ลบองค์ประกอบที่ดัชนี 3
using System;
using System.Collections.ObjectModel;
public class Demo
{
public static void Main()
{
Collection<string> col = new Collection<string>();
col.Add("Andy");
col.Add("Kevin");
col.Add("John");
col.Add("Kevin");
col.Add("Mary");
col.Add("Katie");
col.Add("Barry");
col.Add("Nathan");
col.Add("Mark");
Console.WriteLine("จำนวนองค์ประกอบ = " + col.Count);
Console.WriteLine("วนลูปผ่าน Collection...");
foreach (var item in col)
{
Console.WriteLine(item);
}
// ลบองค์ประกอบที่ดัชนี 3 (คือ "Kevin" ตัวที่สอง)
col.RemoveAt(3);
Console.WriteLine("จำนวนองค์ประกอบ (อัปเดต) = " + col.Count);
Console.WriteLine("วนลูปผ่าน Collection... (อัปเดต)");
foreach (var item in col)
{
Console.WriteLine(item);
}
}
}
ผลลัพธ์
จำนวนองค์ประกอบ = 9 วนลูปผ่าน Collection... Andy Kevin John Kevin Mary Katie Barry Nathan Mark จำนวนองค์ประกอบ (อัปเดต) = 8 วนลูปผ่าน Collection... (อัปเดต) Andy Kevin John Mary Katie Barry Nathan Mark
ตัวอย่างที่ 2: ลบหลายดัชนีติดต่อกัน
using System;
using System.Collections.ObjectModel;
public class Demo
{
public static void Main()
{
Collection<string> col = new Collection<string>();
col.Add("One");
col.Add("Two");
col.Add("Three");
col.Add("Four");
col.Add("Five");
col.Add("Six");
Console.WriteLine("จำนวนองค์ประกอบ = " + col.Count);
Console.WriteLine("วนลูปผ่าน Collection...");
foreach (var item in col)
{
Console.WriteLine(item);
}
// หมายเหตุ: การลบหลายดัชนีต้องคำนวณดัชนีใหม่หลังลบแต่ละครั้ง
col.RemoveAt(1); // ลบ "Two" -> ดัชนี 1
col.RemoveAt(2); // ลบ "Four" (เดิมคือดัชนี 3 แต่เลื่อนมาเป็น 2)
col.RemoveAt(3); // ลบ "Six" (เดิมคือดัชนี 5 แต่เลื่อนมาเป็น 3)
Console.WriteLine("จำนวนองค์ประกอบ (อัปเดต) = " + col.Count);
Console.WriteLine("วนลูปผ่าน Collection... (อัปเดต)");
foreach (var item in col)
{
Console.WriteLine(item);
}
}
}
ผลลัพธ์
จำนวนองค์ประกอบ = 6 วนลูปผ่าน Collection... One Two Three Four Five Six จำนวนองค์ประกอบ (อัปเดต) = 3 วนลูปผ่าน Collection... (อัปเดต) One Three Five
ข้อสังเกตสำคัญ
- เมธอด
RemoveAtจะลบองค์ประกอบที่ดัชนีที่ระบุและเลื่อนองค์ประกอบถัดไปมาทับตำแหน่งเดิม - หากต้องการลบหลายดัชนี ให้ลบจากดัชนีสูงไปต่ำ หรือคำนวณดัชนีใหม่หลังการลบแต่ละครั้ง
- จะโยน
ArgumentOutOfRangeExceptionหากดัชนีน้อยกว่า 0 หรือมากกว่าหรือเท่ากับCount