如何初始化IList <IList <string >>?

mar*_*zzz 5 c# arrays initialization list matrix

试过:

IList<IList<string>> matrix = new List<new List<string>()>();
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 13

你需要:

IList<IList<string>> matrix = new List<IList<string>>();
Run Code Online (Sandbox Code Playgroud)

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

这不起作用的原因:

// Invalid
IList<IList<string>> matrix = new List<List<string>>();
Run Code Online (Sandbox Code Playgroud)

这样写起来是合理的:

// string[] implements IList<string>
matrix.Add(new string[10]);
Run Code Online (Sandbox Code Playgroud)

...但这会违反这个事实,即列表实际上List<List<string>>- 它必须包含List<string>值,而不仅仅是任何 IList<string> ...而我在顶部的声明只是创建一个List<IList<string>>,所以你可以添加一个字符串数组而不会破坏类型安全.

当然,您可以更改为在声明中使用具体类型:

IList<List<string>> matrix = new List<List<string>>();
Run Code Online (Sandbox Code Playgroud)

甚至:

List<List<string>> matrix = new List<List<string>>();
Run Code Online (Sandbox Code Playgroud)