คลาส Array ใน C# เป็น Base Class ของอาร์เรย์ทุกประเภท อยู่ใน Namespace System มี Properties หลัก 5 อย่างที่ใช้ตรวจสอบขนาด มิติ และลักษณะของอาร์เรย์
ตารางสรุป Properties ของ Array Class
| ลำดับ | Property | คำอธิบาย |
|---|---|---|
| 1 | IsFixedSize | คืนค่า true หากอาร์เรย์มีขนาดคงที่ (ทุกอาร์เรย์ใน C# เป็น Fixed Size) |
| 2 | IsReadOnly | คืนค่า true หากอาร์เรย์เป็น Read-Only (อาร์เรย์ทั่วไปคือ false) |
| 3 | Length | คืนจำนวน Elements ทั้งหมดทุกมิติ (int 32-bit) |
| 4 | LongLength | คืนจำนวน Elements ทั้งหมดทุกมิติ (long 64-bit) ใช้กับอาร์เรย์ขนาดใหญ่มาก |
| 5 | Rank | คืนจำนวนมิติ (Dimensions) ของอาร์เรย์ (1 = Single-dimensional, 2 = 2D, etc.) |
ตัวอย่างการใช้งานจริง
1. ตรวจสอบมิติและขนาดของ 2D Array
int[,] arr = new int[3, 4]; // 3 แถว 4 คอลัมน์
// Rank = จำนวนมิติ
Console.WriteLine(arr.Rank); // Output: 2
// GetLength(0) = จำนวนแถว, GetLength(1) = จำนวนคอลัมน์
Console.WriteLine(arr.GetLength(0)); // Output: 3
Console.WriteLine(arr.GetLength(1)); // Output: 4
// Length = จำนวน Elements ทั้งหมด (3 * 4 = 12)
Console.WriteLine(arr.Length); // Output: 12
// Bounds
Console.WriteLine("Upper Bound: {0}", arr.GetUpperBound(0)); // 2 (Index สูงสุดของมิติ 0)
Console.WriteLine("Lower Bound: {0}", arr.GetLowerBound(0)); // 0 (Index ต่ำสุด)
2. โค้ดตัวอย่างสมบูรณ์
using System;
class Program
{
static void Main()
{
int[,] arr = new int[3, 4];
Console.WriteLine("Rows (GetLength 0): " + arr.GetLength(0));
Console.WriteLine("Cols (GetLength 1): " + arr.GetLength(1));
Console.WriteLine("Total Elements (Length): " + arr.Length);
Console.WriteLine("Upper Bound Dim 0: " + arr.GetUpperBound(0));
Console.WriteLine("Lower Bound Dim 0: " + arr.GetLowerBound(0));
Console.WriteLine("Dimensions (Rank): " + arr.Rank);
// ทดสอบ Properties อื่นๆ
Console.WriteLine("IsFixedSize: " + arr.IsFixedSize); // True
Console.WriteLine("IsReadOnly: " + arr.IsReadOnly); // False
Console.WriteLine("LongLength: " + arr.LongLength); // 12L
}
}
3. ผลลัพธ์
Rows (GetLength 0): 3 Cols (GetLength 1): 4 Total Elements (Length): 12 Upper Bound Dim 0: 2 Lower Bound Dim 0: 0 Dimensions (Rank): 2 IsFixedSize: True IsReadOnly: False LongLength: 12
Properties เพิ่มเติมที่น่าสนใจ (Methods แต่ใช้บ่อย)
- GetLength(dimension) - คืนขนาดของมิติที่ระบุ (0-based)
- GetUpperBound(dimension) - คืน Index สูงสุดของมิตินั้น
- GetLowerBound(dimension) - คืน Index ต่ำสุดของมิตินั้น (ปกติเป็น 0)
- Clone() - สร้าง Shallow Copy ของอาร์เรย์
- CopyTo(Array, index) - คัดลอกข้อมูลไปยังอาร์เรย์อื่น
เทคนิค: วนลูป 2D Array ให้ถูกต้อง
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
Console.Write(arr[i, j] + " ");
}
Console.WriteLine();
}
สรุป: ใช้ Rank เช็คมิติ, GetLength เช็คขนาดแต่ละมิติ, Length/LongLength เช็คจำนวน Elements ทั้งหมด และ IsFixedSize/IsReadOnly สำหรับตรวจสอบลักษณะอาร์เรย์