Come posso determinare la dimensione di un array (lunghezza / numero di elementi) in C #?
Come posso determinare la dimensione di un array (lunghezza / numero di elementi) in C #?
Risposte:
Se è un array unidimensionale a
,
a.Length
darà il numero di elementi di a
.
If b
è un array multidimensionale rettangolare (ad esempio int[,] b = new int[3, 5];
)
b.Rank
darà il numero di dimensioni (2) e
b.GetLength(dimensionIndex)
otterrà la lunghezza di una data dimensione (indicizzazione basata su 0 per le dimensioni - quindi b.GetLength(0)
è 3 e b.GetLength(1)
è 5).
Vedere la documentazione di System.Array per ulteriori informazioni.
Come sottolinea @Lucero nei commenti, esiste il concetto di "array frastagliato", che in realtà non è altro che un array monodimensionale di array (tipicamente unidimensionali).
Ad esempio, si potrebbe avere quanto segue:
int[][] c = new int[3][];
c[0] = new int[] {1, 2, 3};
c[1] = new int[] {3, 14};
c[2] = new int[] {1, 1, 2, 3, 5, 8, 13};
Nota che i 3 membri di c
tutti hanno lunghezze diverse. In questo caso, come prima c.Length
indicherà il numero di elementi di c
, (3) e c[0].Length
, c[1].Length
e c[2].Length
sarà 3, 2 e 7, rispettivamente.
int[][]
) ;-)
[,]
e [][]
non sembra essere chiara per tutti i neofiti di .NET, quindi potrebbe comunque valere la pena notare che [][]
non è un array multidimensionale nel senso delle risposte.
b.GetLength[0] is 3 and b.GetLength[1] is 5
dovrebbe essere b.GetLength(0) and b.GetLength(1)
.
Puoi guardare la documentazione di Array per trovare la risposta a questa domanda.
In questo caso particolare probabilmente avrai bisogno di Lunghezza :
int sizeOfArray = array.Length;
Ma dal momento che questa è una domanda così basilare e tu senza dubbio ne hai molte altre come questa, piuttosto che dirti semplicemente la risposta, preferisco dirti come trovare la risposta da solo.
Visual Studio Intellisense
Quando digiti il nome di una variabile e premi il .
tasto, ti mostra un elenco di tutti i metodi, proprietà, eventi, ecc. Disponibili su quell'oggetto. Quando si evidenzia un membro, viene fornita una breve descrizione di ciò che fa.
Premi F1
Se trovi un metodo o una proprietà che potrebbe fare quello che vuoi ma non sei sicuro, puoi spostare il cursore su di esso e premere F1 per ottenere aiuto. Qui si ottiene una descrizione molto più dettagliata e collegamenti a informazioni correlate.
Ricerca
I termini di ricerca size of array in C#
forniscono molti link che ti dicono la risposta alla tua domanda e molto altro ancora. Una delle abilità più importanti che un programmatore deve imparare è come trovare le informazioni. Spesso è più veloce trovare la risposta da soli, soprattutto se la stessa domanda è stata posta in precedenza.
Usa un tutorial
Se stai appena iniziando a imparare il C #, troverai più facile seguire un tutorial. Posso consigliare i tutorial C # su MSDN. Se vuoi un libro, ti consiglio Essential C # .
Stack Overflow
Se non riesci a trovare la risposta da solo, non esitare a pubblicare la domanda su Stack Overflow. Ma apprezziamo se dimostri che ti sei sforzato di trovare prima la risposta.
per matrice 1 dimensionale
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
per array multidimensionali
int length = listItems.Rank;
Per ottenere la dimensione di 1 dimensione
int length = listItems.GetLength(0);
Rank
proprietà non restituisce il numero di elementi, restituisce il numero di dimensioni.
Length
, Rank
, GetLength
)
yourArray.Length
:)
Per un array a dimensione singola, utilizzi la Length
proprietà:
int size = theArray.Length;
Per array a più dimensioni, il file Length
proprietà restituisce il numero totale di elementi nell'array. Puoi utilizzare il GetLength
metodo per ottenere la dimensione di una delle dimensioni:
int size0 = theArray.GetLength(0);
va così: 1D:
type[] name=new type[size] //or =new type[]{.....elements...}
2D:
type[][]name=new type[size][] //second brackets are emtpy
quindi mentre usi questo array:
name[i]=new type[size_of_sec.Dim]
oppure Puoi dichiarare qualcosa come una matrice
type[ , ] name=new type [size1,size2]
Quello che è stato perso finora è ciò di cui all'improvviso mi sono irritato:
Come faccio a sapere la quantità di elementi all'interno dell'array? È .Length
uguale.Count
una lista?
La risposta è: la quantità di elementi di tipo X che sono stati inseriti in una matrice di tipo X creata con new X[number]
te la devi portare con te !
Per esempio. utilizzando un contatore: int countItemsInArray = 0
ecountItemsInArray++
per ogni assegnazione al tuo array.
(L'array appena creato con new X[number]
ha tutto lo spazio per gli number
elementi (riferimenti) di tipo X già allocati, puoi assegnare a qualsiasi posto all'interno come primo incarico, ad esempio (if number
= 100 e la variabile name = a
) a[50] = new X();
.
Non so se C # specifica il valore iniziale di ogni posizione all'interno di un array al momento della creazione, se non lo fa o il valore iniziale che non puoi confrontare (perché potrebbe essere un valore che tu stesso hai inserito nell'array), tu dovrebbe tenere traccia anche dei posti all'interno dell'array che hai già assegnato se non assegni sequenzialmente a partire da 0
(nel qual caso tutti i posti più piccoli dicountItemsInArray
verrebbero assegnati).)
Nella tua domanda la dimensione di un array (lunghezza / numero di elementi) dipende dal fatto che / stia per "alternativa" o "dividi per" quest'ultimo deve ancora essere coperto (il "numero di elementi" che ho appena dato come " quantità di elementi "e altri hanno dato .Length
che corrisponde al valore dinumber
nel mio codice sopra):
C # ha un sizeof
operatore ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ). È sicuro da usare per i tipi incorporati (come int) (e opera solo sui tipi (non sulle variabili)). Quindi la dimensione di un array b
di tipo int
in byte sarebbeb.Length * sizeof(int)
.
(A causa di tutto lo spazio di un array già allocato durante la creazione, come menzionato sopra, e sizeof
lavorando solo sui tipi, nessun codice simile sizeof(variable)/sizeof(type)
funzionerebbe o produrrebbe la quantità di elementi senza tracciamento.)