Anzahl Elemente/Einträge im Array zählen

colt_s

Grünschnabel
Hallo liebe Leser

Habe ein banales Problem, bekomme es aber nicht wirklich gelöst.
Nachdem ich mich totgesucht habe hoffe ich das mir hier jemand helfen kann.

Ich habe ein Array unter VB .NET angelegt

Private meinArray(100) As meinObjekt

Nun möchte ich dieses Array befüllen, sagen wir mal mit einem Eintrag.

meinArray(0) = meinObjekt_1

Somit befindet sich in meinem Array mit 101 "Speicherplätzen" ein Eintrag.
Diese Anzahl an Einträgen möchte ich nun ermitteln (welches 1 wäre), da sich diese während der Programmlaufzeit ändern. Aber die bekannten Funktionen liefern immer nur die Gesamtgöße von 101.
Natürlich kann ich das Array durchlaufen und reigucken oder mir auch über eine weitere Variable die Anzahl merken.

Aber es muss doch eine Funktion wie meinArray.count oder so geben.
Unter PHP ist es so schön einfach, aber bei VB bekomm ichs nicht hin.

Ich hoffe ihr könnt mir helfen, da ich bestrebt bin meinen Quellcode übersichlich und so gering wie möglich halten möchte.
Vielen Dank für eure Mühe!
 
Ich denke Collections sind was du suchst. Diese sind wie die Arrays in PHP dynamisch erweiterbar sowie gibt es typensichere Varianten.
Wenn du aus diversen Gründen bei Arrays bleiben willst, kannst du über eine Zählmethode schreiben welche überprüft wieviele Elemente nicht den Initialisierungswert haben. Bei einem Array mit Objekten kannst du gegen Nothing abfragen, bei Standard-Datentypen musst du dir einen ungültigen Standardwertsuchen (minValue, maxValue, string.empty,...).
Überprüfen musst du das ganze je nach Befüllmethode.
Sofern du ein Element nach dem anderen befüllst kannst du alle Elemente solange durchlaufen bis das aktuelle nicht dem Standardwert entspricht.

Wenn die Elemente nicht nach Reihenfolge befüllt werden musst du immer alle Elemente durchlaufen und gegen den Standardwert vergleichen. Je nach Standardwert musst du dann den Zähler hochzählen.

Zu Beginn musst du natürlich dein Array mit den Standardwerten initialisieren.

Ich hoffe ich konnte dir helfen.
 
Ich glaub auch, dass du am Besten Collections hernehmen kannst. Davon gibts verschiedene Typen, je nachdem, was du damit vorhast.

Eine Möglichkeit wäre, "List(Of T)" zu verwenden:

Code:
Dim Liste As New List(Of String)

Liste.Add("Hallo!")
Liste.Count ' -> 1

Wenn du die Reihenfolge behalten willst, dann gibts die zwei:

Queue(Of T) -> Das erste, das du reingesteckt hast, kommt als erstes wieder raus
Stack(Of T) -> Das letzte, das du reinsteckst, kommt zuerst wieder raus

Am Besten schaust du mal in die MSDN in den Collections-Namespace.
 
Ich danke euch vielmals für eure Hife und diesen Tip

Das Handling mit den Collections ist genaus so übersichtlich wie mit den Array, bietet aber weit aus sinnvollere Funktionen welche die Arbeit erheblich vereinfachen.

Engelmarkus, danke für dein Beispiel. Hat ganze zwei Minuten gedauert und ich hatte dadurch das Programm so laufen wie es sein sollte.
 

Neue Beiträge

Zurück