Mảng đa chiều trong C#
Mảng đa chiều
Trong chương trước, bạn đã tìm hiểu về mảng , còn được gọi là mảng một chiều . Đây là những điều tuyệt vời và là thứ bạn sẽ sử dụng rất nhiều khi lập trình bằng C#. Tuy nhiên, nếu bạn muốn lưu trữ dữ liệu dưới dạng bảng, như bảng có hàng và cột, bạn cần làm quen với mảng nhiều chiều .
Mảng nhiều chiều về cơ bản là một mảng gồm nhiều mảng.
Mảng có thể có số chiều bất kỳ. Phổ biến nhất là mảng hai chiều (2D).
Mảng hai chiều
Để tạo mảng 2D, hãy thêm từng mảng trong tập hợp các dấu ngoặc nhọn riêng và chèn dấu phẩy ( ,
) bên trong dấu ngoặc vuông:
Ví dụ
int[,] numbers = { {1, 4, 2}, {3, 6, 8} };
Điều cần biết: Dấu phẩy đơn [,]
chỉ định rằng mảng là hai chiều. Mảng ba chiều sẽ có hai dấu phẩy: int[,,]
.
numbers
bây giờ là một mảng có hai mảng làm phần tử. Phần tử mảng đầu tiên chứa ba phần tử: 1, 4 và 2, trong khi phần tử mảng thứ hai chứa 3, 6 và 8. Để hình dung nó, hãy coi mảng như một bảng có các hàng và cột:
Truy cập các phần tử của mảng 2D
Để truy cập một phần tử của mảng hai chiều, bạn phải chỉ định hai chỉ mục: một cho mảng và một cho phần tử bên trong mảng đó. Hoặc tốt hơn nữa, hãy lưu ý đến hình ảnh bảng; một cho hàng và một cho cột (xem ví dụ bên dưới).
Câu lệnh này truy cập giá trị của phần tử ở hàng đầu tiên (0) và cột thứ ba (2) của mảng numbers
:
Ví dụ
int[,] numbers = { {1, 4, 2}, {3, 6, 8} }; Console.WriteLine(numbers[0, 2]); // Outputs 2
Hãy nhớ rằng: Chỉ mục mảng bắt đầu bằng 0: [0] là phần tử đầu tiên. [1] là phần tử thứ hai, v.v.
Thay đổi các phần tử của mảng 2D
Bạn cũng có thể thay đổi giá trị của một phần tử.
Ví dụ sau sẽ thay đổi giá trị của phần tử ở hàng đầu tiên (0) và cột đầu tiên (0) :
Ví dụ
int[,] numbers = { {1, 4, 2}, {3, 6, 8} }; numbers[0, 0] = 5; // Change value to 5 Console.WriteLine(numbers[0, 0]); // Outputs 5 instead of 1
Lặp qua mảng 2D
Bạn có thể dễ dàng lặp qua các phần tử của mảng hai chiều bằng vòng lặp foreach
:
Ví dụ
int[,] numbers = { {1, 4, 2}, {3, 6, 8} }; foreach (int i in numbers) { Console.WriteLine(i); }
Bạn cũng có thể sử dụng vòng lặp for . Đối với mảng nhiều chiều, bạn cần một vòng lặp cho mỗi chiều của mảng.
Cũng lưu ý rằng chúng ta phải sử dụng GetLength()
thay vì Length
để chỉ định số lần vòng lặp sẽ chạy:
Ví dụ
int[,] numbers = { {1, 4, 2}, {3, 6, 8} }; for (int i = 0; i < numbers.GetLength(0); i++) { for (int j = 0; j < numbers.GetLength(1); j++) { Console.WriteLine(numbers[i, j]); } }