Chủ Nhật, 1 tháng 3, 2009

Mảng không đều (Jagged Arrays)

Một mảng không đều là một mảng mà các các phần tử là các mảng. Các yếu tố của một mảng không đều có thể được các kích thước khác nhau và kích cỡ. Một mảng không đều đôi khi được gọi là một "mảng của các mảng." Các ví dụ sau đây cho thấy làm thế nào cho khai báo, khởi tạo, và các mảng truy cập không đều.

Sau đây là một khai báo của một mảng một chiều là có ba các phần tử, mỗi phần là một mảng một chiều các số nguyên:

int[][] jaggedArray = new int[3][];

Trước khi bạn có thể sử dụng jaggedArray, các phần tử của nó phải được khởi tạo. Bạn có thể khởi tạo các các phần tử như thế này:

jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];

Mỗi trong các phần tử là một mảng một chiều các số nguyên. Yếu tố đầu tiên là một mảng trong 5 số nguyên, thứ hai là một mảng của 4 số nguyên, và thứ ba là một mảng của 2 số nguyên.

Nó cũng có thể sử dụng initializers để điền vào các phần tử của mảng có giá trị, trong trường hợp bạn không cần phải có kích thước mảng. Ví dụ:

jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };

Bạn cũng có thể khởi tạo mảng khi khai báo như thế này:

int[][] jaggedArray2 = new int[][]
{
        new int[] {1,3,5,7,9},
        new int[] {0,2,4,6},
        new int[] {11,22}
};

Bạn có thể sử dụng hình thức viết tắt sau đây. Chú ý là bạn không thể bỏ qua toán tử mới từ khởi tạo phần tử vì không có khởi tạo mặc định cho các phần tử:

int[][] jaggedArray3 =
{
       new int[] {1,3,5,7,9},
       new int[] {0,2,4,6},
       new int[] {11,22}
};

Một mảng không đều là một mảng trong mảng, và do đó phần tử của nó là loại tham chiếu và được khởi tạo giá trị null.

Bạn có thể truy cập phần tử mảng cá nhân như các ví dụ này:

// Assign 77 to the second element ([1]) of the first array ([0]):
jaggedArray3[0][1] = 77;

// Assign 88 to the second element ([1]) of the third array ([2]):
jaggedArray3[2][1] = 88;

Nó có thể kết hợp các mảng không đều và đa chiều. Sau đây là một khai báo và khởi tạo một mảng một chiều không đều có chứa ba phần tử mảng hai chiều kích thước khác nhau.

int[][,] jaggedArray4 = new int[3][,]
{
       new int[,] { {1,3}, {5,7} },
       new int[,] { {0,2}, {4,6}, {8,10} },
       new int[,] { {11,22}, {99,88}, {0,9} }
};

Bạn có thể truy cập vào phần tử cá nhân như trong ví dụ này, hiển thị giá trị của phần tử [1,0] trong mảng đầu tiên (giá trị 5):

System.Console.Write("{0}", jaggedArray4[0][1, 0]);

Method này trả về độ dài số mảng chứa trong các mảng không đều. Ví dụ, giả sử bạn đã khai báo mảng trước, dòng này:

System.Console.WriteLine(jaggedArray4.Length);

DangTrung.

Không có nhận xét nào:

Đăng nhận xét