Effizientes Entfernen von Elementen aus .NET-Arrays
Im Gegensatz zu dynamischen Arrays wie List<T>
fehlt bei Standard-.NET-Arrays eine direkte Remove
-Methode. In diesem Artikel werden effektive Strategien zum Entfernen von Elementen aus regulären Arrays untersucht.
Nutzung von LINQ zur Elemententfernung
Ein prägnanter Ansatz nutzt LINQ, um das Array zu filtern und zu rekonstruieren:
<code class="language-csharp">var foos = new Foo[] { foo1, foo2, foo3, foo4 }; foos = foos.Where(f => f.Id != idToRemove).ToArray();</code>
Dadurch wird das Array in ein List<T>
konvertiert, das unerwünschte Element basierend auf einer Bedingung (hier f.Id != idToRemove
) herausgefiltert und dann die gefilterte Liste wieder in ein Array umgewandelt.
Benutzerdefinierte Erweiterungsmethode für RemoveAt
Funktionalität
Für mehr Kontrolle kann eine benutzerdefinierte Erweiterungsmethode implementiert werden, die das RemoveAt
-Verhalten nachahmt:
<code class="language-csharp">public static T[] RemoveAt<T>(this T[] source, int index) { if (index < 0 || index >= source.Length) throw new ArgumentOutOfRangeException(nameof(index)); T[] dest = new T[source.Length - 1]; Array.Copy(source, 0, dest, 0, index); Array.Copy(source, index + 1, dest, index, source.Length - index - 1); return dest; }</code>
Diese Methode verarbeitet Randfälle effizient und kopiert Elemente vor und nach dem angegebenen Index in ein neues Array, wodurch das Element am angegebenen Index effektiv entfernt wird. Verwendung:
<code class="language-csharp">Foo[] foos = GetFoos(); foos = foos.RemoveAt(2);</code>
Dies bietet einen direkteren Ersatz für die fehlende RemoveAt
Funktionalität in regulären Arrays. Denken Sie daran, dass beide Methoden ein neues Array erstellen; Das ursprüngliche Array bleibt unverändert. Wählen Sie die Methode, die Ihren Anforderungen und Ihrem Codierungsstil am besten entspricht.
Das obige ist der detaillierte Inhalt vonWie entferne ich Elemente aus einem regulären Array in .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!