Như C++ và Java, trong ngôn ngữ C# có hỗ trợ mảng nhiều chiều. Trong đó, phổ biến và thường được sử dụng nhiều nhất là mảng 2 chiều. Mảng 2 chiều được lưu trữ theo các hàng và cột, giống như ma trận trong toán học.
Mảng 2 chiều: int[,] mang2Chieu = new int[2, 2];
Mảng 3 chiều: int[, ,] mang3Chieu = new int[1, 2, 3];
1. Cú pháp khai báo
Cách 1: khai báo tên mảng
1 |
Kiểu_dữ_liệu[,] Tên_mảng = new Kiểu_dữ_liệu[Số hàng, số cột] |
Khai báo mảng 2 chiều có kiểu nguyên: int[,] mangNguyen = new int[3,4];
Khai báo mảng 2 chiều có kiểu chuỗi: string[,] mangChuoi = new string[3,2];
Cách 2: khai báo và khởi tạo các giá trị cho mảng
1 |
Kiểu_dữ_liệu[,] Tên_mảng = new Kiểu_dữ_liệu[Số hàng, số cột]{ { so1, <span class="hljs-number">so2</span> }, { <span class="hljs-number">so3</span>, so<span class="hljs-number">4</span> },..., { so<span class="hljs-number">M</span>, so<span class="hljs-number">N</span> } }; |
Mảng 2 chiều có kiểu nguyên: int[,] mangNguyen = new int[2,2]{ { 1, 2 }, { 3, 4 }};
Mảng 2 chiều có kiểu chuỗi: string[,] mangChuoi = new string[3,2]{ { “a”, “b” }, { “c”, “d” }, { “e”, “f” } };
Khai báo mảng không xác định số hàng, cột: int[,] mangNguyen = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
2. Cấu trúc lưu trữ
Một mảng 2 chiều có thể được xem như 1 bảng với m hàng và n cột.

Ví dụ: khai báo và khởi tạo mảng gồm 3 hàng, 4 cột:
int[,] a = new int[3,4]{ //m= 3, n = 4
{0, 1, 2, 3},
{4, 5, 6, 7},
{8, 9, 10, 11},
};

Chú ý: vị trí lưu trữ trong bộ nhớ sẽ được tính từ 0.
3. Truy cập phần tử trong mảng 2 chiều
Để truy cập phần tử xác định của mảng 2 chiều, cần chỉ rõ tên mảng[vị trí hàng, vị trí cột]
Xét ví dụ ở hình 2:
int phanTu00 = a[0,0]; //giaTri = 0
int phanTu11 = a[1,1]; //giaTri = 5
int phanTu23 = a[2,3]; //giaTri = 11
4. Ví dụ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/* Khai báo mảng gồm 3 hàng, 4 cột như hình 2 */ int[,] a = new int[3, 4] { { 0, 1, 2, 3 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 } }; int phanTu00, phanTu11, phanTu23, i, j; phanTu00 = a[0, 0]; phanTu11 = a[1, 1]; phanTu23 = a[2, 3]; Console.WriteLine($" {phanTu00} --- {phanTu11} ---{phanTu23}"); /* In các giá trị của mảng */ for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { Console.WriteLine($"a[{i},{j}] = {a[i,j]}"); } } Console.ReadLine(); } |