Wie kann ich ein Element aus einem Array in VB.NET löschen?
Wie kann ich das löschen eines Elements aus einem array in VB.NET?
InformationsquelleAutor der Frage vb.net | 2010-08-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie kann ich das löschen eines Elements aus einem array in VB.NET?
InformationsquelleAutor der Frage vb.net | 2010-08-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Heinzi sagte, ein array hat eine Feste Größe. Um 'entfernen Sie ein Element' oder 'resize', müssen Sie erstellen ein neues array mit der gewünschten Größe, und kopieren Sie die Elemente, die Sie benötigen, angebracht.
Hier der code zum entfernen eines Elements aus einem array:
Können Sie es verwenden, wie folgt:
Den obigen code entfernt das zweite element (
"mno"
) [die hat einen index von 1] aus dem array.Müssen Sie zu werden Entwicklung in .NET 3.5 oder höher, um die extension-Methode.
Wenn Sie verwenden .NET 2.0 oder 3.0 haben, können Sie rufen Sie die Methode als solche
Ich hoffe das ist das, was Sie brauchen.
Update
Nach der Ausführung von tests, basierend auf ToolMakerSteve Kommentar es erscheint der erste code nicht ändern das array, das Sie aktualisieren möchten, weil der
ByVal
verwendet in der Funktion der Erklärung. Allerdings ist das schreiben von code wiearr = arr.RemoveAt(1)
oderarr = RemoveAt(arr, 1)
hat, ändert das array, da es ordnet die modifizierte array an das original.Nachfolgend finden Sie die aktualisierte Methode (Unterprogramm) zum entfernen eines Elements aus einem array.
Verwendung der Methode ist ähnlich wie das original, außer es gibt keine return-Wert dieses mal so versucht, weisen Sie ein array vom Rückgabewert wird nicht funktionieren, weil nichts zurückgegeben.
Hinweis:
Redim Preserve
. Wenn Sie möchten, ändern Sie das array in-place-mithilfeRedim Preserve
finden Sie ToolmakerSteve Antwort.Den
RemoveAt
Methoden hier geschrieben wird, sind Erweiterung-Methoden. In Reihenfolge für Sie zu arbeiten, müssen Sie fügen Sie Sie in eineModule
. Erweiterung Methoden funktionieren nicht in VB.NET wenn Sie Sie in eineClass
.Wichtig Wenn Sie ändern Ihre array mit viel 'entfernt', ist es dringend empfohlen, verwenden Sie eine andere Datenstruktur wie
List(Of T)
wie vorgeschlagen, die von anderen Beantworter dieser Frage.InformationsquelleAutor der Antwort Alex Essilfie
Können Sie nicht. Ich würde vorschlagen, dass Sie die array-Elemente in eine
List
dann zumindest können Sie Elemente entfernen. Ein array kann beliebig erweitert werden, zum Beispiel mitReDim
aber nicht entfernen von array-Elementen, sobald Sie erstellt wurden. Sie müssten, um den Wiederaufbau der array von Grund auf zu tun.Wenn Sie es vermeiden können, nicht mit arrays hier, verwenden Sie eine
List
.InformationsquelleAutor der Antwort Jason Evans
Hängt davon ab, was du damit meinst löschen. Ein array hat eine Feste Größe, so dass das löschen nicht wirklich sinnvoll.
Wenn Sie möchten, entfernen Sie das Filterelement
i
eine Möglichkeit wäre, alle Elemente verschieben.j > i
eine position nach Links (a[j - 1] = a[j]
für allej
oder mitArray.Copy
) und dann die Größe des Arrays mit ReDim Preserve.So, es sei denn, Sie sind gezwungen, um ein array zu verwenden, die durch einige externe Einschränkung, überlegen Sie sich eine Datenstruktur, die mehr geeignet für das hinzufügen und entfernen von Elementen. List<T>zum Beispiel, verwendet ebenfalls ein array intern, sondern kümmert sich um alle die Größenänderung Fragen sich: Für das entfernen von Elementen, es verwendet den Algorithmus oben erwähnt (ohne die ReDim -), das ist der Grund, warum
List<T>.RemoveAt
ist eine O(n) operation.Gibt es eine ganze Reihe von verschiedenen collection-Klassen in der System.Sammlungen.Generic namespace, optimiert für verschiedene Anwendungsfälle. Wenn das entfernen von Elementen, Häufig ist eine Voraussetzung, es gibt viele bessere Optionen als ein array (oder auch
List<T>
).InformationsquelleAutor der Antwort Heinzi
Ja, Sie können löschen Sie ein element aus einem array. Hier ist eine Erweiterung Methode, die bewegt, die Elemente wie nötig, dann passt das array eine kürzere:
Anwendungsbeispiele (vorausgesetzt array beginnend mit dem index 0):
Entfernen der Ersten oder Letzten element gemeinsam ist, so sind hier die Bequemlichkeit-Routinen zu tun (ich mag code, drückt meine Absicht mehr lesbar):
Verwendung:
Und wie Heinzi schon sagte, wenn Sie finden, sich selbst, dies zu tun, verwenden Sie stattdessen-Liste(Von T), wenn möglich. Liste bereits "RemoveAt" Unterprogramm, und andere Routinen, die nützlich für das einfügen/löschen von Elementen.
InformationsquelleAutor der Antwort ToolmakerSteve
Einer Linie mit LINQ:
Entferne erstes element:
Entfernen Letzte element:
InformationsquelleAutor der Antwort Ivan Ferrer Villa
Meine Lieblings-Weg:
Dann in den code, wenn ich mich etwas entfernen, aus einem array kann ich tun, es durch irgendeine Eigenschaft in ein Objekt in das array mit einem bestimmten Wert, wie:
Oder wenn ich schon weiß das genaue Objekt möchte ich entfernen, ich kann das einfach tun:
InformationsquelleAutor der Antwort Derek Ziemba
Die variable
i
ist der index des Elements, das Sie löschen möchten:InformationsquelleAutor der Antwort Vinayak D.Gaikwad
Dies kann eine faule Lösung, aber kann Sie nicht löschen Sie einfach den Inhalt von der index entfernt werden soll, indem Sie neu zugewiesen werden, sodass Ihre Werte auf 0 oder "" und dann ignorieren/überspringen diese leere array-Elemente statt Neuerstellung und kopieren von arrays an-und ausschalten?
InformationsquelleAutor der Antwort Derphausen
versuchen, diese
InformationsquelleAutor der Antwort Lulu Lovely
Scheint, wie das klingt komplizierter als es ist...
Nun können Sie zuweisen tempArr zurück zu den ursprünglichen oder was auch immer Sie brauchen getan mit es wie in...
TextBox1.Linien = tempArr (Sie haben nun eine textbox leer von leere Zeilen)
InformationsquelleAutor der Antwort Thurman Jenner