Non c'è un modo semplice per fare questo, perché nella situazione che stai descrivendo, non c'è niente di fermare i double[]
array nella lista dall'essere diverse dimensioni, che avrebbe essere incompatibile con una matrice rettangolare bidimensionale. Tuttavia, se siete in grado di garantire i double[]
array tutti hanno la stessa dimensionalità, si può creare l'array bidimensionale come segue:
var arr = new double[ret.Count(),ret[0].Count()];
for(int i=0; i<ret.Count(); i++) {
for(int j=0; j<ret[i].Count(); j++)
arr[i,j] = ret[i][j];
}
questo produrrà un errore di run-time se una delle double[]
le matrici nella lista sono più corte della prima e perderai i dati se uno degli array è più grande del primo.
Se si è veramente determinati a memorizzare una matrice seghettata in una matrice rettangolare, è possibile utilizzare un valore "magico" per indicare che non vi è alcun valore in quella posizione. Per esempio:
var arr = new double[ret.Count(),ret.Max(x=>x.Count())];
for(int i=0; i<ret.Count(); i++) {
for(int j=0; j<arr.GetLength(1); j++)
arr[i,j] = j<ret[i].Count() ? ret[i][j] : Double.NaN;
}
In una nota editoriale, penso che questa sia una pessima idea ™; quando si usa la matrice rettangolare, è necessario verificare Double.NaN
in ogni momento. Inoltre, cosa succede se si desidera utilizzare Double.NaN
come valore legittimo nell'array? Se hai una matrice seghettata, dovresti lasciarla come una matrice seghettata.
fonte
2012-03-19 17:56:01
sembra un array * frastagliato * non un array 2D: sei sicuro che sia il tuo requisito dal momento che tutti gli array hanno la stessa lunghezza? – BrokenGlass
probabilmente sarebbe più elegante modificare il codice che richiede l'array multidimensionale. – Jodrell
Forse dovresti pubblicare un codice che spieghi esattamente cosa vuoi e spiegare perché lo vuoi in quel modo. – Bernard