Mảng jagged là một mảng của mảng, vì vậy một int[][] là một mảng của int[], mỗi mảng có thể có độ dài khác nhau và chiếm khối riêng của chúng trong bộ nhớ. Mảng nhiều chiều (int[,]) là một khối bộ nhớ duy nhất (về cơ bản là một ma trận). Cơ bản thì mảng jagged là các mảng "lồng vào nhau" và không cần có kích thước đồng nhất.
Chúng ta có
int[][] jaggedArray = new int[5][];
jaggedArray[0] = new[] {1, 2, 3}; // 3 item array
jaggedArray[1] = new int[10]; // 10 item array
// etc.
Đó là một tập hợp các mảng liên quan
Mặt khác, mảng nhiều chiều là một nhóm gắn kết hơn, chẳng hạn như hộp, bảng, khối lập phương, v.v., trong đó chúng đồng nhất về độ dài. Điều đó có nghĩa là:
int i = array[1,10];
int j = array[2,10]; // 10 will be available at 2 if available at 1
Ngoài ra, bạn không thể tạo một MyClass[10][20] vì mỗi mảng con phải được khởi tạo riêng biệt, vì chúng là các đối tượng riêng biệt:
MyClass[][] abc = new MyClass[10][];
for (int i=0; i<abc.Length; i++) {
abc[i] = new MyClass[20];
}
Một MyClass[10,20] thì ok, vì nó đang khởi tạo một đối tượng duy nhất dưới dạng ma trận với 10 hàng và 20 cột.