Jagged Array trong C#
– Chúng ta thấy mảng hai chiều được ứng nhiều trong thực tế. Tuy nhiên, mảng hai chiều cũng có sự cứng nhắc về cách khai báo. Đó là: hàng đầu tiên của mảng hay bất kỳ hàng nào cũng phải có cùng số cột (số cột phải giống nhau).
– Trong trường hợp chúng ta mong muốn một cấu trúc mảng mà hàng đầu tiên có 2 cột, hàng thứ 2 có 3 cột, hàng thứ 3 có 4 cột,… thì với cách khai báo của mảng hai chiều sẽ không đáp ứng được yêu cầu như vậy.
– Do đó, đã ra đời cách khai báo Jagged Array trong C#. Và cũng giống mảng hai chiều là một Jagged Array trong C# là một mảng của các mảng mà mỗi phần tử là một mảng với kích thước có thể khác nhau. Những mảng con này phải được khai báo từng mảng con một.
– Cách khai báo một Jagged Array
Kiểu_dữ_liệu[][] tên_mảng;
– Khai báo, cấp phát vùng nhớ và khởi tạo một Jagged Array
int[][] jaggedArr = new int[2][] { new int[] { 97, 98, 99 }, new int[] { 1, 2, 3, 4 } };
Trong đó:
- jaggedArr là một mảng có 2 dòng (mỗi dòng là một mảng integer) và số cột bao nhiêu là chưa biết.
- jaggedArr[0] là một mảng 3 số nguyên integer: 97, 98, 99
- jaggedArr[1] là một mảng 4 số nguyên integer: 1, 2, 3, 4
– Minh họa Jagged Array:
Ví dụ 1:
using System; namespace MinhHoangBlog { class Program { static void Main(string[] args) { /* Khai báo một jagged array gồm 5 mảng con kiểu integer */ int[][] a = new int[][] { new int[] { 0, 0 }, new int[] { 1, 2 }, new int[] { 2, 4 }, new int[] { 3, 6 }, new int[] { 4, 8 } }; /* In giá trị từng mảng con của jagged array */ for (int row = 0; row < 5; row++) { for (int col = 0; col < 2; col++) { Console.Write("a[{0}][{1}] = {2}\t", row, col, a[row][col]); } Console.WriteLine(); } Console.ReadKey(); } } }
Ví dụ 2:
using System; namespace MinhHoangBlog { class Program { static void Main(string[] args) { // Khai báo một jagged array A kiểu integer int[][] A; // Khởi tạo mảng A: 5 dòng, số cột chưa biết A = new int[5][]; /* Khởi tạo số cột cho từng dòng: * row đầu tiên có 1 col * row thứ 2 có 2 col * row thứ 3 có 3 col * row thứ 4 có 4 col * row thứ 5 có 5 col */ for (int row = 0; row < A.Length; row++) { A[row] = new int[row + 1]; } // Nhập liệu và in mảng ra màn hình for ( int row = 0; row < 5; row++ ) { for ( int col = 0; col < A[row].Length; col++ ) { A[row][col] = row + col; Console.Write( A[row][col] + " " ); } Console.WriteLine(); } Console.ReadKey(); } } }