ชนิดข้อมูลของ Array (Array Data Types) ใน C#
Array ใน C# สามารถสร้างจากชนิดข้อมูลใดก็ได้: Primitive Types, Reference Types, User-defined Types
การประกาศ Array
// Syntax
dataType[] arrayName;
// ตัวอย่าง
int[] intArray; // Integer Array
double[] doubleArray; // Double Array
string[] stringArray; // String Array (Reference Type)
bool[] boolArray; // Boolean Array
char[] charArray; // Char Array
MyClass[] objArray; // Custom Class Array
การสร้างและ Initialize
// 1. กำหนดขนาด (Default Values: 0, null, false)
int[] a = new int[5]; // {0,0,0,0,0}
// 2. Array Initializer (ขนาดมาจากจำนวน Element)
int[] b = new int[] { 1, 2, 3, 4, 5 };
int[] c = { 1, 2, 3, 4, 5 }; // Short Form (ใน Declaration เท่านั้น)
// 3. Implicitly Typed (var)
var d = new[] { 1, 2, 3 }; // int[]
var e = new[] { "a", "b" }; // string[]
Multidimensional Arrays
// 2D Array (Rectangular) - [rows, cols]
int[,] matrix = new int[3, 4];
int[,] matrix2 = { {1,2}, {3,4}, {5,6} };
// 3D Array
int[,,] cube = new int[2, 3, 4];
// Jagged Array (Array of Arrays) - [][]
int[][] jagged = new int[3][];
jagged[0] = new int[] {1, 2};
jagged[1] = new int[] {3, 4, 5};
jagged[2] = new int[] {6};
Array Properties และ Methods
| Member | คำอธิบาย |
|---|---|
Length | จำนวน Element ทั้งหมด (All Dimensions) |
Rank | จำนวน Dimension (1, 2, 3...) |
GetLength(dimension) | ขนาดของ Dimension ที่ระบุ (0-based) |
GetLowerBound(dimension) | Lower Bound (ปกติ 0) |
GetUpperBound(dimension) | Upper Bound (Length-1) |
Clone() | Shallow Copy |
ตัวอย่าง: Query Array Info
int[,] arr = new int[3, 4]; // 3 rows, 4 cols
Console.WriteLine($"Rank: {arr.Rank}"); // 2
Console.WriteLine($"Length: {arr.Length}"); // 12
Console.WriteLine($"Dim 0 (Rows): {arr.GetLength(0)}"); // 3
Console.WriteLine($"Dim 1 (Cols): {arr.GetLength(1)}"); // 4
Covariance (Arrays เท่านั้น)
string[] strings = { "a", "b" };
object[] objects = strings; // OK: Array Covariance (string[] -> object[])
objects[0] = "c"; // OK
// objects[0] = 123; // Runtime Error: ArrayTypeMismatchException