10

Tôi có một mảng các mảng 2D. Ví dụ, nó cũng giống như:Cách khởi tạo một mảng các mảng 2D?

{{{0, 0, 1}, {1, 0, 0}} 
{{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}} 
{{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}} 

Nhưng nếu tôi viết

int [,][] arrays={{{0, 0, 1}, {1, 0, 0}} 
        {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}} 
        {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}}; 

trình biên dịch sẽ phàn nàn "; dự kiến".

Nếu tôi viết

int [,][] arrays={new int[,] {{0, 0, 1}, {1, 0, 0}} 
        new int[,] {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}} 
        new int[,] {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}}}; 

trình biên dịch sẽ phàn nàn

"Một khởi tạo mảng lồng nhau được mong đợi".

Vậy tại sao điều này xảy ra và cách khởi tạo chính xác là gì?

Trả lời

20

Bạn đang cố gắng để tạo ra mảng lởm chởm. Mảng của bạn có n hàng nên hình vuông đầu tiên của bạn phải là [] chứ không phải [,]. Phần tử trong mỗi hàng (chỉ số của n) là mảng 2D, do đó bạn cần sử dụng [,]. Cuối cùng, bạn có thể khắc phục sự cố của mình bằng cách thay đổi int [,][] thành int[][,].

int[][,] arrays = { 
    new int[,] {{0, 0, 1}, {1, 0, 0}}, 
    new int[,] {{0, 0, 3}, {2, 1, 2}, {2, 2, 1}, {3, 0, 0}}, 
    new int[,] {{0, 0, 7}, {3, 2, 6}, {6, 2, 3}, {6, 3, 2}, {7, 0, 0}} 
}; 
+0

Tôi thêm 'int mới [,] []' vào đầu nhưng lỗi vẫn còn đó. – ziyuang

+0

Ahh, tôi thấy sự cố của bạn, tôi có thêm mã chỉnh sửa từ ví dụ của bạn. – Ekk

+0

Nó hoạt động ~ Tôi nghĩ 'int [,]' là một kiểu sao cho mảng của kiểu này sẽ là 'int [,] []'. Tại sao nó như vậy? – ziyuang

2

Một mảng của mảng 2ngày là một mảng 3d:

int[, ,] array3D = new int[,,] { { { 1, 2, 3 } }, { { 4, 5, 6 } } }; 

Cũng xem chi tiết tại MSDN http://msdn.microsoft.com/en-us/library/2yd9wwz4(v=VS.90).aspx

+1

Nhưng mà làm cho chỉ số ngoài cùng cố định, mà là rõ ràng từ câu hỏi của ông, ông muốn không cố định – Dani

+0

Một mảng 3d cũng đòi hỏi rằng tất cả 3 chỉ số được cung cấp, kết quả là một số nguyên, trong khi hỏi muốn index và trở lại mảng 2d. – dapi