Wie kann ich die Größe eines Arrays (Länge / Anzahl der Elemente) in C # bestimmen?
Wie kann ich die Größe eines Arrays (Länge / Anzahl der Elemente) in C # bestimmen?
Antworten:
Wenn es sich um ein eindimensionales Array handelt a
,
a.Length
gibt die Anzahl der Elemente von an a
.
If b
ist ein rechteckiges mehrdimensionales Array (zum Beispiel int[,] b = new int[3, 5];
)
b.Rank
gibt die Anzahl der Dimensionen (2) und an
b.GetLength(dimensionIndex)
erhält die Länge einer bestimmten Dimension (0-basierte Indizierung für die Dimensionen - also b.GetLength(0)
3 und b.GetLength(1)
5).
Weitere Informationen finden Sie in der System.Array-Dokumentation .
Wie @Lucero in den Kommentaren hervorhebt, gibt es ein Konzept eines "gezackten Arrays", das eigentlich nichts anderes als ein eindimensionales Array von (typischerweise eindimensionalen) Arrays ist.
Zum Beispiel könnte man folgendes haben:
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};
Beachten Sie, dass die 3 Mitglieder c
alle unterschiedliche Längen haben. In diesem Fall, wie zuvor c.Length
wird gibt die Anzahl der Elemente c
, (3) und c[0].Length
, c[1].Length
und c[2].Length
wird 3, 2 bzw. 7 sein.
int[][]
) ;-)
[,]
und [][]
scheint jedoch nicht für alle .NET-Neulinge klar zu sein. Daher ist es möglicherweise dennoch erwähnenswert, dass dies [][]
kein mehrdimensionales Array im Sinne Ihrer Antworten ist.
b.GetLength[0] is 3 and b.GetLength[1] is 5
sollte sein b.GetLength(0) and b.GetLength(1)
.
Sie können sich die Dokumentation zu Array ansehen finden Sie die Antwort auf diese Frage.
In diesem speziellen Fall benötigen Sie wahrscheinlich Länge :
int sizeOfArray = array.Length;
Aber da dies eine so grundlegende Frage ist und Sie zweifellos noch viel mehr davon haben, anstatt Ihnen nur die Antwort zu sagen, möchte ich Ihnen lieber sagen, wie Sie die Antwort selbst finden können.
Visual Studio Intellisense
Wenn Sie den Namen einer Variablen eingeben und die .
Taste drücken, wird eine Liste aller für dieses Objekt verfügbaren Methoden, Eigenschaften, Ereignisse usw. angezeigt. Wenn Sie ein Mitglied markieren, erhalten Sie eine kurze Beschreibung dessen, was es tut.
Drücken Sie F1
Wenn Sie eine Methode oder Eigenschaft finden, die möglicherweise das tut, was Sie möchten, sich aber nicht sicher sind, können Sie den Cursor darüber bewegen und F1 drücken, um Hilfe zu erhalten. Hier erhalten Sie eine viel detailliertere Beschreibung sowie Links zu verwandten Informationen.
Suche
Die Suchbegriffe enthalten size of array in C#
viele Links, die Ihnen die Antwort auf Ihre Frage und vieles mehr geben. Eine der wichtigsten Fähigkeiten, die ein Programmierer erlernen muss, ist das Finden von Informationen. Es ist oft schneller, die Antwort selbst zu finden, insbesondere wenn dieselbe Frage bereits gestellt wurde.
Verwenden Sie ein Tutorial
Wenn Sie gerade erst anfangen, C # zu lernen, fällt es Ihnen leichter, einem Tutorial zu folgen. Ich kann die C # -Tutorials auf MSDN empfehlen . Wenn Sie ein Buch möchten, würde ich Essential C # empfehlen .
Paketüberfluss
Wenn Sie die Antwort nicht selbst finden können, können Sie die Frage gerne auf Stack Overflow posten. Wir freuen uns jedoch, wenn Sie zeigen, dass Sie sich die Mühe gemacht haben, die Antwort zuerst selbst zu finden.
für 1 dimensionale Anordnung
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
für mehrdimensionales Array
int length = listItems.Rank;
Um die Größe von 1 Dimension zu erhalten
int length = listItems.GetLength(0);
Rank
Eigenschaft gibt nicht die Anzahl der Elemente zurück, sondern die Anzahl der Dimensionen.
Length
, Rank
, GetLength
)
yourArray.Length
:) :)
Für ein eindimensionales Array verwenden Sie die Length
Eigenschaft:
int size = theArray.Length;
Bei Arrays mit mehreren Dimensionen gibt die Length
Eigenschaft die Gesamtzahl der Elemente im Array zurück. Mit der GetLength
Methode können Sie die Größe einer der Dimensionen ermitteln:
int size0 = theArray.GetLength(0);
es geht so: 1D:
type[] name=new type[size] //or =new type[]{.....elements...}
2D:
type[][]name=new type[size][] //second brackets are emtpy
dann, wie Sie dieses Array verwenden:
name[i]=new type[size_of_sec.Dim]
oder Sie können so etwas wie eine Matrix deklarieren
type[ , ] name=new type [size1,size2]
Was bisher übersehen wurde, hat mich plötzlich irritiert:
Woher weiß ich, wie viele Elemente sich im Array befinden? Ist .Length
gleich.Count
eine Liste?
Die Antwort lautet: Die Anzahl der Elemente vom Typ X, die in ein mit Ihnen erstelltes Array vom Typ X eingefügt wurden new X[number]
, müssen Sie selbst tragen !
Z.B. mit einem Zähler: int countItemsInArray = 0
undcountItemsInArray++
für jede Zuordnung zu Ihrem Array.
(Das soeben erstellte Array new X[number]
hat bereits Platz für number
Elemente (Referenzen) vom Typ X, die bereits zugewiesen wurden. Sie können beispielsweise als erste Zuweisung eine beliebige Stelle innerhalb des Arrays zuweisen (if number
= 100 und der Variablenname = a
) a[50] = new X();
.
Ich weiß nicht, ob C # den Anfangswert jeder Stelle innerhalb eines Arrays bei der Erstellung angibt, wenn dies nicht der Fall ist oder den Anfangswert, mit dem Sie nicht vergleichen können (da es sich möglicherweise um einen Wert handelt, den Sie selbst in das Array eingegeben haben) müsste nachverfolgen, welchen Stellen innerhalb des Arrays Sie bereits zugewiesen haben, wenn Sie nicht nacheinander abweisen 0
(in diesem Fall alle Stellen, die kleiner sind als countItemsInArray
zugewiesen).)
In Ihrer Frage muss die Größe eines Arrays (Länge / Anzahl der Elemente) in Abhängigkeit davon, ob / für "alternativ" oder "durch" dividieren "stehen soll, noch abgedeckt werden (die" Anzahl der Elemente ", die ich gerade als" angegeben "habe). Anzahl der Artikel "und andere gaben an .Length
, was dem Wert von number
in meinem Code oben entspricht):
C # hat einen sizeof
Operator ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ). Es ist sicher für integrierte Typen (wie int) zu verwenden (und funktioniert nur mit Typen (nicht mit Variablen)). Somit wäre die Größe eines Arrays b
vom Typ int
in Bytes b.Length * sizeof(int)
.
(Da der gesamte Speicherplatz eines Arrays bereits bei der Erstellung zugewiesen wurde, wie oben erwähnt, und sizeof
nur mit Typen funktioniert, würde kein Code wie sizeof(variable)/sizeof(type)
funktionieren oder die Anzahl der Elemente ohne Nachverfolgung ergeben.)