如何初始化IList <ilist <string>&gt;?</ilist <string>

时间:2012-02-06 10:08:30

标签: c# arrays list matrix initialization

试过:

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

但我不能。我该怎么做?我需要一个字符串矩阵......

4 个答案:

答案 0 :(得分:13)

你需要:

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]);

...但这会违反列表真的一个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>>();

答案 1 :(得分:3)

试试这个

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

答案 2 :(得分:1)

这样可行 - 您无法按照尝试的方式初始化泛型类型参数:

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

但是,内部IList<string>将是null。要初始化它,您可以执行以下操作:

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

答案 3 :(得分: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];