2012-02-06 14 views

risposta

12

Avresti bisogno:

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

ma poi si può accadere di aggiungere sempre un List<string> per ogni elemento.

La ragione per cui questo non funziona:

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

è che sarebbe quindi ragionevole di scrivere:

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

... ma che violerebbero il fatto che la lista è veramente a List<List<string>> - deve contenere valori List<string>, non solo qualsiasiIList<string> ... mentre la mia dichiarazione in alto crea solo un List<IList<string>>, quindi è possibile aggiungere una serie di stringhe a esso senza sicurezza di tipo interruzione.

Naturalmente, si potrebbe cambiamento di utilizzare il tipo concreto nella dichiarazione invece:

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

o anche:

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

provare questo

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

la mia risposta ha skeeted: D –

1

questo sarà il lavoro - non è possibile inizializzare un generico digita il parametro nel modo in cui hai provato:

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

Tuttavia, t he interno IList<string> sarà null. Per inizializzare esso è possibile effettuare le seguenti operazioni:

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

@Downvoter - cura di commentare? – Oded

1

se matrice è di array di dimensioni costanti sono una misura migliore

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

e se è rettangolare

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

Non conosco le dimensioni iniziali ... dovrebbe essere dinamico :) – markzzz

Problemi correlati