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

เมธอด Array.Clear() ใน C#

ภาพรวม

เมธอด Array.Clear() ใน C# ใช้ล้างค่าองค์ประกอบในอาร์เรย์และตั้งค่าให้เป็นค่าเริ่มต้น (default value) ของชนิดข้อมูลนั้นๆ การล้างข้อมูลจะทำงานในช่วงที่ระบุ (range) โดยกำหนดดัชนีเริ่มต้นและจำนวนองค์ประกอบที่ต้องการล้าง

ไวยากรณ์

public static void Clear(Array array, int index, int length);

พารามิเตอร์

  • array - อาร์เรย์ที่ต้องการล้างองค์ประกอบ
  • index - ดัชนีเริ่มต้นของช่วงที่ต้องการล้าง (เริ่มจาก 0)
  • length - จำนวนองค์ประกอบที่ต้องการล้าง

ตัวอย่างที่ 1: อาร์เรย์มิติเดียว

using System;

public class Demo
{
    public static void Main()
    {
        Console.WriteLine("องค์ประกอบของอาร์เรย์...");
        int[] arr = { 20, 50, 100, 150, 200, 300, 400, 450, 500, 600, 800, 1000, 1500, 2000 };
        
        for (int i = 0; i < 14; i++)
            Console.Write("{0} ", arr[i]);
        
        Console.WriteLine();
        Console.WriteLine("กำลังล้างองค์ประกอบในช่วงที่กำหนด...");
        
        // ล้าง 9 องค์ประกอบ เริ่มจากดัชนี 5 (คือค่า 300, 400, 450, 500, 600, 800, 1000, 1500, 2000)
        Array.Clear(arr, 5, 9);
        
        for (int i = 0; i < 14; i++)
            Console.Write("{0} ", arr[i]);
        
        Console.WriteLine();
    }
}

ผลลัพธ์ตัวอย่างที่ 1

องค์ประกอบของอาร์เรย์...
20 50 100 150 200 300 400 450 500 600 800 1000 1500 2000
กำลังล้างองค์ประกอบในช่วงที่กำหนด...
20 50 100 150 200 0 0 0 0 0 0 0 0 0

ตัวอย่างที่ 2: อาร์เรย์หลายมิติ

using System;

public class Demo
{
    public static void Main()
    {
        Console.WriteLine("องค์ประกอบของอาร์เรย์...");
        int[,] arr = { {20, 50, 100, 120}, 
                       {150, 200, 300, 350}, 
                       {400, 450, 500, 550}, 
                       {600, 800, 1000, 1200} };
        
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
                Console.Write("{0} ", arr[i, j]);
            Console.WriteLine();
        }
        
        Console.WriteLine();
        Console.WriteLine("กำลังล้างองค์ประกอบในช่วงที่กำหนด...");
        
        // อาร์เรย์ 2 มิติถูกจัดเก็บแบบแถวต่อเนื่อง (row-major order)
        // ดัชนี 5 = arr[1,1] (ค่า 200), ล้าง 9 องค์ประกอบ
        Array.Clear(arr, 5, 9);
        
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
                Console.Write("{0} ", arr[i, j]);
            Console.WriteLine();
        }
        Console.WriteLine();
    }
}

ผลลัพธ์ตัวอย่างที่ 2

องค์ประกอบของอาร์เรย์...
20 50 100 120
150 200 300 350
400 450 500 550
600 800 1000 1200

กำลังล้างองค์ประกอบในช่วงที่กำหนด...
20 50 100 120
150 0 0 0
0 0 0 0
0 0 1000 1200

ข้อสังเกตสำคัญ

  • ค่าเริ่มต้นสำหรับชนิดตัวเลขคือ 0 สำหรับ bool คือ false สำหรับ reference type คือ null
  • อาร์เรย์หลายมิติใน C# จัดเก็บหน่วยความจำแบบต่อเนื่อง (row-major) ดังนั้น Array.Clear() ทำงานบนหน่วยความจำแบบแบน (flattened)
  • เมธอดนี้ไม่เปลี่ยนขนาดของอาร์เรย์ เพียงแค่ตั้งค่าองค์ประกอบเป็นค่าเริ่มต้น