Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ลบองค์ประกอบที่ดัชนีที่ระบุของ Collection ใน C#

ในการลบองค์ประกอบที่ดัชนีเฉพาะของ 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