ภาพรวม
เมธอด 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) - เมธอดนี้ไม่เปลี่ยนขนาดของอาร์เรย์ เพียงแค่ตั้งค่าองค์ประกอบเป็นค่าเริ่มต้น