2012-02-06 29 views

Trả lời

12

Bạn sẽ cần:

IList<IList<string>> matrix = new List<IList<string>>(); 

nhưng sau đó bạn có thể xảy ra luôn thêm một List<string> cho mỗi phần tử.

Lý do điều này sẽ không làm việc:

// Invalid 
IList<IList<string>> matrix = new List<List<string>>(); 

là nó sau đó sẽ là hợp lý để viết:

// string[] implements IList<string> 
matrix.Add(new string[10]); 

... nhưng điều đó sẽ vi phạm một thực tế rằng danh sách này là thực sự a List<List<string>> - nó phải chứa giá trị List<string>, không chỉ bất kỳIList<string> ... trong khi khai báo của tôi ở trên cùng chỉ tạo ra một List<IList<string>>, vì vậy, bạn có thể thêm mảng chuỗi vào số mà không cần an toàn loại vi phạm.

Tất nhiên, bạn có thể thay đổi để sử dụng các loại bê tông trong việc kê khai của mình thay vì:

IList<List<string>> matrix = new List<List<string>>(); 

hoặc thậm chí:

List<List<string>> matrix = new List<List<string>>(); 
3

thử này

IList<IList<string>> matrix = new List<IList<string>>(); 
+1

câu trả lời của tôi đã skeeted: D –

1

này sẽ làm việc - bạn không thể khởi tạo một generic nhập thông số theo cách bạn đã thử:

IList<IList<string>> matrix = new List<IList<string>>(); 

Mặc dù, t anh ấy bên trong IList<string> sẽ là null. Để khởi tạo nó, bạn có thể làm như sau:

matrix.Add(new List<string>()); 
+1

@Downvoter - chăm sóc bình luận? – Oded

1

nếu ma trận là của mảng kích thước không đổi là một sự phù hợp tốt hơn

string[][] matrix = new string[size]; 
matrix[0] = new string[5]; 
matrix[1] = new string[8]; 
matrix[2] = new string[7]; 

và nếu nó là hình chữ nhật

string[,] matrix = new string[sizex,sizey]; 
+0

Tôi không biết kích thước ban đầu ... nên là dinamic :) – markzzz

Các vấn đề liên quan