VB.NET Leeres String-Array
Frage
Wie kann ich ein leeres eindimensionales String-Array erstellen?
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 = {}