2012-05-13 24 views
6

In C, in matrice dicono A[2][3] destra variazione dell'indice determinato un piccolo spostamento indirizzo di memoria, cioè elementi erano situati in memoria, come A[0][0], A[0][1]...matrice rettangolare fisico per memoria

È stesso vale per gli array rettangolari in NET? Se abbiamo, diciamo che l'array a[2, 3] sono elementi localizzati in memoria come a[0, 0], a[0, 1]...?

+0

Non stai esattamente confrontando comparabile. Il tuo array C non è in realtà un array 2D, è una matrice di array. Puoi fare lo stesso anche in C#: ad es. 'int [] []', non 'int [,]'. – svick

+0

@svick sei semplicemente sbagliato. –

+0

No, è così che gli array 2D sono implementati in C. Sono solo un array 1-dimensionale i cui elementi sono essi stessi matrici monodimensionali. –

risposta

14

La CLI specification, sezione 8.9.1, afferma:

elementi di matrice sono disposti all'interno dell'oggetto matrice in ordine row-major (cioè, gli elementi associati alla matrice destra dimensione sono presentato in modo contiguo dal più basso al più alto indice ). Lo spazio di archiviazione effettivo assegnato per ciascun elemento dell'array può includere il riempimento specifico della piattaforma.

Quindi la risposta è sì - si incontrano prima tutti gli elementi della prima fila, poi tutti gli elementi della seconda fila, etc (come le specifiche dice, questo è chiamato row-major ordine).

+1

Grazie, è stato pigro trovarlo da solo! :) –

Problemi correlati