Nehmen wir an, ich habe dieses Array,
int[] numbers = {1, 3, 4, 9, 2};
Wie kann ich ein Element mit "Name" löschen? Sagen wir Nummer 4?
Auch ArrayList
nicht geholfen zu löschen?
string strNumbers = " 1, 3, 4, 9, 2";
ArrayList numbers = new ArrayList(strNumbers.Split(new char[] { ',' }));
numbers.RemoveAt(numbers.IndexOf(4));
foreach (var n in numbers)
{
Response.Write(n);
}
Antworten:
Wenn Sie alle Instanzen von 4 entfernen möchten, ohne den Index kennen zu müssen:
LINQ: (.NET Framework 3.5)
Nicht-LINQ: (.NET Framework 2.0)
Wenn Sie nur die erste Instanz entfernen möchten:
LINQ: (.NET Framework 3.5)
Nicht-LINQ: (.NET Framework 2.0)
Bearbeiten: Nur für den Fall, dass Sie es nicht bereits herausgefunden haben, wie Malfist betonte, müssen Sie auf .NET Framework 3.5 abzielen, damit die LINQ-Codebeispiele funktionieren. Wenn Sie auf 2.0 abzielen, müssen Sie auf die Non-LINQ-Beispiele verweisen.
quelle
quelle
Sie können Ihr Array auch in eine Liste konvertieren und remove in der Liste aufrufen. Sie können dann wieder in Ihr Array konvertieren.
quelle
Der in der Frage geschriebene Code enthält einen Fehler
Ihre Arrayliste enthält Zeichenfolgen von "1" "3" "4" "9" und "2" (beachten Sie die Leerzeichen)
IndexOf (4) findet also nichts, weil 4 ein int ist, und sogar "tostring" würde es in "4" und nicht in "4" konvertieren, und nichts wird entfernt.
Eine Arrayliste ist der richtige Weg, um das zu tun, was Sie wollen.
quelle
List<T>
dies besser als ArrayList wäre, scheint dies die einzige Antwort zu sein, die das Problem, das das OP hatte, als er versuchte, ArrayList zur Lösung seines ursprünglichen Problems zu verwenden, korrekt identifiziert. Das OP hat verstanden, dass Sie die Größe von Arrays nicht ändern können, was anscheinend niemand anderes bemerkt hat, und versucht, stattdessen einen veränderbaren Typ zu verwenden, den anscheinend niemand anderes bemerkt hat, und ist dann auf ein anderes Problem gestoßen, das sonst niemand zu bemerken scheint bemerkt zu haben.Die Antwort von Balabaster ist richtig, wenn Sie alle Instanzen des Elements entfernen möchten. Wenn Sie nur den ersten entfernen möchten, gehen Sie folgendermaßen vor:
quelle
Ich habe meine Lösung hier veröffentlicht .
Auf diese Weise können Sie ein Array-Element löschen, ohne es in ein anderes Array zu kopieren - nur im Frame derselben Array-Instanz:
quelle
Das Entfernen aus einem Array selbst ist nicht einfach, da Sie sich dann um die Größenänderung kümmern müssen. Dies ist einer der großen Vorteile der Verwendung von so etwas wie einem
List<int>
. Es bietetRemove
/RemoveAt
in 2.0 und viele LINQ-Erweiterungen für 3.0.Wenn Sie können, refactor, um ein
List<>
oder ähnliches zu verwenden.quelle
Als generische Erweiterung 2.0-kompatibel:
Verwendung:
quelle
' Entfernen von Elementen aus der Zeichenfolge basierend auf den Schlüsselwerten des Wörterbuchs. 'VB.net-Code
quelle
Sie können dies folgendermaßen tun:
quelle