2012-02-06 138 views

回答

12

您将需要:

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

但你可以发生总是添加List<string>每个元素。

的原因,这是行不通的:

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

是,它会接着是合理的写:

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

...但是这将违反事实列表是真的 a List<List<string>> - 它必须包含List<string>的值,而不仅仅是任何IList<string> ...而我在上面的声明只是创建了一个List<IList<string>>,所以你可以给它添加一个字符串数组没有分类型安全。

当然,你可以变化使用的具体类型,在你的声明,而不是:

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

甚至:

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

试试这个

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

我的回答得到了skeeted: D – 2012-02-06 10:15:54

1

这将工作 - 你不能初始化通用type参数你试过的方式:

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

虽然,t他内心IList<string>将是null。要初始化它,你可以做到以下几点:

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

@Downvoter - 谨慎评论? – Oded 2012-02-06 10:27:52

1

如果矩阵是恒定的大小阵列是一个更适合

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

,如果是长方形

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

我不知道初始大小...应该是dinamic :) – markzzz 2012-02-06 15:24:48