In C# werden Arrays als zusammenhängende Speicherblöcke implementiert, die Werte desselben Typs speichern. Im Gegensatz zu anderen Sammlungen wie ArrayLists verfügen Arrays jedoch über eine begrenzte Flexibilität bei der Elementmanipulation. So handhaben Sie das Löschen von Elementen aus einem Array:
Um alle Instanzen eines bestimmten Werts zu entfernen, können Sie die LINQ-Erweiterungsmethode .Where() (bei Ausrichtung auf .NET Framework 3.5 oder höher) oder die Array.FindAll()-Methode von .NET Framework 2.0 verwenden. Betrachten Sie den folgenden Code:
<code class="language-csharp">int[] numbers = { 1, 3, 4, 9, 2 }; int numToRemove = 4; // LINQ numbers = numbers.Where(val => val != numToRemove).ToArray(); // 非LINQ numbers = Array.FindAll(numbers, isNotFour).ToArray(); bool isNotFour(int n) { return n != 4; }</code>
Wenn Sie nur die erste Instanz des Werts entfernen möchten, können Sie erneut den LINQ- oder Nicht-LINQ-Ansatz nutzen:
<code class="language-csharp">int[] numbers = { 1, 3, 4, 9, 2, 4 }; int numToRemove = 4; // LINQ int numIdx = Array.IndexOf(numbers, numToRemove); numbers = numbers.Where((val, idx) => idx != numIdx).ToArray(); // 非LINQ int numIdx = Array.IndexOf(numbers, numToRemove); List<int> tmp = new List<int>(numbers); tmp.RemoveAt(numIdx); numbers = tmp.ToArray();</code>
Zusammenfassend lässt sich sagen, dass Arrays zwar ein effizientes Speichern und Abrufen von Elementen ermöglichen, ihre Flexibilität bei der Elementmanipulation jedoch begrenzt sind, sodass Methoden wie RemoveAt() ungeeignet sind. Stattdessen bietet die oben beschriebene Methode eine effiziente Alternative zum Entfernen von Werten aus einem Array.
Das obige ist der detaillierte Inhalt vonWie kann ich Elemente effizient aus C#-Arrays entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!