List<T>.RemoveAll(Predicate<T>) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Entfernt alle Elemente, die die vom angegebenen Prädikat definierten Bedingungen erfüllen.
public:
int RemoveAll(Predicate<T> ^ match);
public int RemoveAll (Predicate<T> match);
member this.RemoveAll : Predicate<'T> -> int
Public Function RemoveAll (match As Predicate(Of T)) As Integer
Parameter
- match
- Predicate<T>
Der Predicate<T>-Delegat, der die Bedingungen für die Elemente definiert, die entfernt werden sollen.
Gibt zurück
Die Anzahl der aus der List<T>-Klasse entfernten Elemente.
Ausnahmen
match
ist null
.
Beispiele
Im folgenden Beispiel wird die RemoveAll Methode und mehrere andere Methoden veranschaulicht, die den Predicate<T> generischen Delegaten verwenden.
Eine List<T> Zeichenfolge wird erstellt, die 8 Dinosauriernamen enthält, von denen zwei (an position 1 und 5) mit "saurus" enden. Im Beispiel wird auch eine Suchprädikatmethode namens definiert EndsWithSaurus
, die einen Zeichenfolgenparameter akzeptiert und einen booleschen Wert zurückgibt, der angibt, ob die Eingabezeichenfolge in "saurus" endet.
Die FindMethoden FindLastund FindAll Methoden werden verwendet, um die Liste mit der Such-Prädikatmethode zu durchsuchen.
Die RemoveAll Methode wird verwendet, um alle Einträge zu entfernen, die mit "saurus" enden. Sie durchläuft die Liste von Anfang an, indem jedes Element wiederum an die EndsWithSaurus
Methode übergeben wird. Das Element wird entfernt, wenn die EndsWithSaurus
Methode zurückgibt true
.
Hinweis
In C# und Visual Basic ist es nicht erforderlich, die Predicate<string>
Stellvertretung (Predicate(Of String)
in Visual Basic) explizit zu erstellen. Diese Sprachen ziehen die richtige Stellvertretung aus dem Kontext ab, und erstellen Sie sie automatisch.
Schließlich überprüft die Exists Methode, dass in der Liste keine Zeichenfolgen vorhanden sind, die mit "saurus" enden.
using namespace System;
using namespace System::Collections::Generic;
// Search predicate returns true if a string ends in "saurus".
bool EndsWithSaurus(String^ s)
{
return s->ToLower()->EndsWith("saurus");
};
void main()
{
List<String^>^ dinosaurs = gcnew List<String^>();
dinosaurs->Add("Compsognathus");
dinosaurs->Add("Amargasaurus");
dinosaurs->Add("Oviraptor");
dinosaurs->Add("Velociraptor");
dinosaurs->Add("Deinonychus");
dinosaurs->Add("Dilophosaurus");
dinosaurs->Add("Gallimimus");
dinosaurs->Add("Triceratops");
Console::WriteLine();
for each(String^ dinosaur in dinosaurs )
{
Console::WriteLine(dinosaur);
}
Console::WriteLine("\nTrueForAll(EndsWithSaurus): {0}",
dinosaurs->TrueForAll(gcnew Predicate<String^>(EndsWithSaurus)));
Console::WriteLine("\nFind(EndsWithSaurus): {0}",
dinosaurs->Find(gcnew Predicate<String^>(EndsWithSaurus)));
Console::WriteLine("\nFindLast(EndsWithSaurus): {0}",
dinosaurs->FindLast(gcnew Predicate<String^>(EndsWithSaurus)));
Console::WriteLine("\nFindAll(EndsWithSaurus):");
List<String^>^ sublist =
dinosaurs->FindAll(gcnew Predicate<String^>(EndsWithSaurus));
for each(String^ dinosaur in sublist)
{
Console::WriteLine(dinosaur);
}
Console::WriteLine(
"\n{0} elements removed by RemoveAll(EndsWithSaurus).",
dinosaurs->RemoveAll(gcnew Predicate<String^>(EndsWithSaurus)));
Console::WriteLine("\nList now contains:");
for each(String^ dinosaur in dinosaurs)
{
Console::WriteLine(dinosaur);
}
Console::WriteLine("\nExists(EndsWithSaurus): {0}",
dinosaurs->Exists(gcnew Predicate<String^>(EndsWithSaurus)));
}
/* This code example produces the following output:
Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops
TrueForAll(EndsWithSaurus): False
Find(EndsWithSaurus): Amargasaurus
FindLast(EndsWithSaurus): Dilophosaurus
FindAll(EndsWithSaurus):
Amargasaurus
Dilophosaurus
2 elements removed by RemoveAll(EndsWithSaurus).
List now contains:
Compsognathus
Oviraptor
Velociraptor
Deinonychus
Gallimimus
Triceratops
Exists(EndsWithSaurus): False
*/
using System;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
List<string> dinosaurs = new List<string>();
dinosaurs.Add("Compsognathus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Oviraptor");
dinosaurs.Add("Velociraptor");
dinosaurs.Add("Deinonychus");
dinosaurs.Add("Dilophosaurus");
dinosaurs.Add("Gallimimus");
dinosaurs.Add("Triceratops");
Console.WriteLine();
foreach(string dinosaur in dinosaurs)
{
Console.WriteLine(dinosaur);
}
Console.WriteLine("\nTrueForAll(EndsWithSaurus): {0}",
dinosaurs.TrueForAll(EndsWithSaurus));
Console.WriteLine("\nFind(EndsWithSaurus): {0}",
dinosaurs.Find(EndsWithSaurus));
Console.WriteLine("\nFindLast(EndsWithSaurus): {0}",
dinosaurs.FindLast(EndsWithSaurus));
Console.WriteLine("\nFindAll(EndsWithSaurus):");
List<string> sublist = dinosaurs.FindAll(EndsWithSaurus);
foreach(string dinosaur in sublist)
{
Console.WriteLine(dinosaur);
}
Console.WriteLine(
"\n{0} elements removed by RemoveAll(EndsWithSaurus).",
dinosaurs.RemoveAll(EndsWithSaurus));
Console.WriteLine("\nList now contains:");
foreach(string dinosaur in dinosaurs)
{
Console.WriteLine(dinosaur);
}
Console.WriteLine("\nExists(EndsWithSaurus): {0}",
dinosaurs.Exists(EndsWithSaurus));
}
// Search predicate returns true if a string ends in "saurus".
private static bool EndsWithSaurus(String s)
{
return s.ToLower().EndsWith("saurus");
}
}
/* This code example produces the following output:
Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops
TrueForAll(EndsWithSaurus): False
Find(EndsWithSaurus): Amargasaurus
FindLast(EndsWithSaurus): Dilophosaurus
FindAll(EndsWithSaurus):
Amargasaurus
Dilophosaurus
2 elements removed by RemoveAll(EndsWithSaurus).
List now contains:
Compsognathus
Oviraptor
Velociraptor
Deinonychus
Gallimimus
Triceratops
Exists(EndsWithSaurus): False
*/
Imports System.Collections.Generic
Public Class Example
Public Shared Sub Main()
Dim dinosaurs As New List(Of String)
dinosaurs.Add("Compsognathus")
dinosaurs.Add("Amargasaurus")
dinosaurs.Add("Oviraptor")
dinosaurs.Add("Velociraptor")
dinosaurs.Add("Deinonychus")
dinosaurs.Add("Dilophosaurus")
dinosaurs.Add("Gallimimus")
dinosaurs.Add("Triceratops")
Console.WriteLine()
For Each dinosaur As String In dinosaurs
Console.WriteLine(dinosaur)
Next
Console.WriteLine(vbLf & _
"TrueForAll(AddressOf EndsWithSaurus: {0}", _
dinosaurs.TrueForAll(AddressOf EndsWithSaurus))
Console.WriteLine(vbLf & _
"Find(AddressOf EndsWithSaurus): {0}", _
dinosaurs.Find(AddressOf EndsWithSaurus))
Console.WriteLine(vbLf & _
"FindLast(AddressOf EndsWithSaurus): {0}", _
dinosaurs.FindLast(AddressOf EndsWithSaurus))
Console.WriteLine(vbLf & _
"FindAll(AddressOf EndsWithSaurus):")
Dim sublist As List(Of String) = _
dinosaurs.FindAll(AddressOf EndsWithSaurus)
For Each dinosaur As String In sublist
Console.WriteLine(dinosaur)
Next
Console.WriteLine(vbLf & _
"{0} elements removed by RemoveAll(AddressOf EndsWithSaurus).", _
dinosaurs.RemoveAll(AddressOf EndsWithSaurus))
Console.WriteLine(vbLf & "List now contains:")
For Each dinosaur As String In dinosaurs
Console.WriteLine(dinosaur)
Next
Console.WriteLine(vbLf & _
"Exists(AddressOf EndsWithSaurus): {0}", _
dinosaurs.Exists(AddressOf EndsWithSaurus))
End Sub
' Search predicate returns true if a string ends in "saurus".
Private Shared Function EndsWithSaurus(ByVal s As String) _
As Boolean
Return s.ToLower().EndsWith("saurus")
End Function
End Class
' This code example produces the following output:
'
'Compsognathus
'Amargasaurus
'Oviraptor
'Velociraptor
'Deinonychus
'Dilophosaurus
'Gallimimus
'Triceratops
'
'TrueForAll(AddressOf EndsWithSaurus: False
'
'Find(AddressOf EndsWithSaurus): Amargasaurus
'
'FindLast(AddressOf EndsWithSaurus): Dilophosaurus
'
'FindAll(AddressOf EndsWithSaurus):
'Amargasaurus
'Dilophosaurus
'
'2 elements removed by RemoveAll(AddressOf EndsWithSaurus).
'
'List now contains:
'Compsognathus
'Oviraptor
'Velociraptor
'Deinonychus
'Gallimimus
'Triceratops
'
'Exists(AddressOf EndsWithSaurus): False
Hinweise
Dies Predicate<T> ist eine Stellvertretung an eine Methode, die zurückgibt true
, wenn das an sie übergebene Objekt mit den in der Stellvertretung definierten Bedingungen übereinstimmt. Die Elemente des Aktuellen List<T> werden einzeln an die Predicate<T> Stellvertretung übergeben, und die Elemente, die mit den Bedingungen übereinstimmen, werden aus der List<T>Stellvertretung entfernt.
Diese Methode führt eine lineare Suche aus; Daher ist diese Methode ein O(n)-Vorgang, wobei n ist Count.