Frage

Wie kann ich ein leeres eindimensionales String-Array erstellen?

War es hilfreich?

Lösung

Dimmen Sie strEmpty(-1) als String

Andere Tipps

VB ist 0-indiziert in Array-Deklarationen, so etwas wie Dim myArray(10) as String gibt Ihnen 11 Elemente.Dies ist ein häufiger Fehler beim Übersetzen aus C-Sprachen.

Für ein leeres Array würde also eine der folgenden Methoden funktionieren:

Dim str(-1) as String ' -1 + 1 = 0, so this has 0 elements
Dim str() as String = New String() { } ' implicit size, initialized to empty

Sie müssen String nicht zweimal einschließen und Sie müssen nicht New verwenden.
Beides wird funktionieren...

Dim strings() as String = {}
Dim strings as String() = {}

Das von Ihnen erstellte Array Dim s(0) As String IST NICHT LEER

In VB.Net ist der Index, den Sie im Array verwenden, der Index des letzten Elements.VB.Net beginnt standardmäßig mit der Indizierung bei 0, Sie haben also ein Array, das bereits ein Element enthält.

Versuchen Sie es stattdessen mit System.Collections.Specialized.StringCollection oder (noch besser) System.Collections.Generic.List(Of String).Sie entsprechen im Wesentlichen einem String-Array, eignen sich jedoch wesentlich besser zum Hinzufügen und Entfernen von Elementen.Und seien wir ehrlich:Sie werden selten eine erstellen leer String-Array ohne hinzufügen zu wollen mindestens ein Element dazu.

Wenn Sie wirklich ein leeres String-Array möchten, deklarieren Sie es wie folgt:

Dim s As String()

oder

Dim t() As String

Etwas wie:

Dim myArray(9) as String

Sie erhalten ein Array mit 10 String-Referenzen (jede zeigt auf Nothing).

Wenn Sie sich über die Größe zum Zeitpunkt der Deklaration nicht sicher sind, können Sie ein String-Array wie folgt deklarieren:

Dim myArray() as String

Und dann können Sie es später auf ein String-Array mit der richtigen Größe verweisen:

ReDim myArray(9) as String

ZombieSheep hat Recht mit der Verwendung einer Liste, wenn Sie die Gesamtgröße nicht kennen und diese dynamisch füllen müssen.In VB.NET wäre das:

Dim myList as New List(Of String)
myList.Add("foo")
myList.Add("bar")

Und dann, um ein Array aus dieser Liste zu erhalten:

myList.ToArray()

@Markieren

Danke für die Korrektur.

Eine andere Möglichkeit, dies zu tun:

Dim strings() As String = {}

Testen, ob es sich um ein leeres String-Array handelt:

MessageBox.Show("count: " + strings.Count.ToString)

Es wird ein Meldungsfeld mit der Meldung „Anzahl:“ angezeigt.0".

Etwas ausführlich, aber selbstdokumentierend ...

Dim strEmpty() As String = Enumerable.Empty(Of String).ToArray

Ich bin mir nicht sicher, warum Sie das möchten, aber der C#-Weg wäre es

string[] newArray = new string[0];

Ich vermute, dass VB dem nicht allzu unähnlich sein wird.

Wenn Sie ein leeres Array erstellen, damit Sie es später mit Werten füllen können, sollten Sie die Verwendung wirklich in Betracht ziehen

List<string>

und es in ein Array umwandeln (wenn Sie es wirklich als Array benötigen) mit

newListOfString.ToArray();

Versuchen Sie diesen dimen ArrayStr () als String = {}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top