‫Nun gut, nun, da Sie wissen, die allgemeine Idee von Delegaten, sehen wir uns diese in Aktion an und um sie
‫besser zu verstehen, beginnen wir mit einem Delegierten, der bereits in C Sharp existiert.
‫Beginnen wir also mit der Definition einer einfachen Liste von Strings namens Namen.
‫Und dann werde ich das verwenden.
‫Nehmen wir an, ich möchte Namen daraus entfernen.
‫Hier ist also diese Methode zum Entfernen aller und damit die Methode "Alle entfernen" ermöglicht es mir, alle Elemente zu entfernen,
‫die den Bedingungen entsprechen, die durch das angegebene Prädikat definiert sind.
‫Sie sehen also, dass dieses grüne Prädikatsschlüsselwort hier im Grunde das ist, was wir übergeben können.
‫Das ist also im Grunde hier ein Delegierter, der erwartet wird.
‫Prädikat ist nur der Name des erwarteten Delegaten.
‫Wenn Sie darauf klicken, finden Sie es hier.
‫Öffentlicher Delegierter wird prädizieren.
‫Sie können also sehen, dass das Prädikat die Delegaten sind, die ein Objekt von T annehmen, was einen bestimmten Typ
‫bedeutet.
‫In diesem Fall ist T der Typ unserer Listenelemente.
‫In unserem Fall ist es also ein String und gibt einen booleschen Wert zurück.
‫Wenn wir also die Methode remove all aufrufen, wird dieses Prädikat für jeden Namen in unserer Liste aufgerufen.
‫Wenn wir die Dokumentation lesen, erfahren wir, dass der von diesem Prädikat zurückgegebene bool bestimmt, ob dieses
‫Element aus der Liste entfernt wird oder nicht.
‫Wenn es true zurückgibt, wird das Element entfernt.
‫Und es ist unsere Aufgabe, diese Regeln zu schreiben, die das Schicksal unserer Namen in unserer Liste bestimmen.
‫Also von diesen Namen, die wir hier haben, was Adens wenn Alter und Anatoliy bedeutet.
‫Schließlich können die Leute, die den Code hinter der Methode remove all geschrieben haben, nicht unsere Gedanken lesen, um die gewünschten
‫Regeln zu bestimmen.
‫Genau.
‫Aus diesem Grund erstellen wir unsere eigene Methode, die der Definition des Prädikatsdelegaten entspricht, und übergeben
‫sie an die Methode remove all.
‫Nehmen wir an, wir möchten alle Namen entfernen, die den Buchstaben I enthalten, damit wir unsere Filtermethode so schreiben
‫können.
‫Also erstellen wir einfach einen statischen Poolfilter, der einen String aufnimmt.
‫Dies ist also unsere Methode namens filter und wir geben zurück, ob die Zeichenfolge den Buchstaben I enthält.
‫Und hier verwenden wir die enthaltene Methode, die einen booleschen Wert zurückgibt, der true oder false
‫zurückgibt.
‫Hier also der Inhalt, Sie sehen, dass ein String überprüft wird, ob er das enthält, und dann einen booleschen Wert zurückgibt.
‫Was wir hier tun, ist, dass wir tatsächlich einen Booleschen Wert zurückgeben.
‫Und es braucht einen String als Parameter, also geben wir im Grunde true zurück, wenn der String I enthält,
‫und dann führt die Methode remove all diese Filtermethode für alle Elemente in unserer Liste aus.
‫Lassen Sie uns nun unsere Filtermethode an die Methode remove all übergeben, die wir hier oben haben, die noch nicht fertig ist
‫und noch einen Delegaten benötigt, den wir an sie übergeben können.
‫Und fügen wir A für jede Schleife vor und nach der Methode remove all nur zur Beobachtung hinzu.
‫Also werde ich diese kleine Erkältung hier einfügen, wo ich nur sage, dass dies zuvor passiert ist.
‫Also schreiben wir eine Namensliste auf die Konsole mit allen Namen, die hier in unserer Liste stehen.
‫Und dann entfernen wir all das, folgen einem bestimmten Filter und führen ihn noch einmal durch.
‫Bei diesem Filter, den wir übergeben, verwenden wir
‫hier keine Klammern, obwohl es sich um eine Methode handelt 'sind vorbei,
‫enthält ein Auge.
‫Lassen Sie uns es also ausführen und sehen, welche Namen enthalten.
‫Und ich.
‫Also, wenn wir Walter und Anatoly identifiziert haben und danach alle außer Walter entfernt haben, weil Walter als
‫String, der kein Auge enthält.
‫OK.
‫Und so haben wir im Grunde einen Delegaten verwendet, der bereits vorhanden war.
‫Und jetzt haben wir eine Methode verwendet, die einen Delegaten erfordert, den wir an sie übergeben können.
‫Was also im Grunde passiert ist, sind Namen, hier gibt es kleine Zeichenfolgen.
‫Wurde zum Entfernen alle angegeben und nacheinander mit dem hier verwendeten Filter überprüft, so dass es jeden
‫einzelnen Wert von name nacheinander in unsere Filtermethode übergab, durch den Filter lief und zurückgegeben wurde, ob er
‫gelöscht wurde oder nicht.
‫Dieser Boolesche Wert ist also wahr, wenn I in der übergebenen Zeichenfolge enthalten ist.
‫Diese Zeichenfolge, die wir derzeit in unserer Namensliste betrachten, und wenn dieses Jahr true zurückgibt, gibt die
‫Filtermethode true zurück.
‫Was dann dazu führt, dass alle entfernt werden, die sich um das Entfernen des Namens aus der Namensliste kümmern.
‫Gut.
‫Dies war also nur ein Beispiel für einen Delegierten.
‫Und sehen Sie, wir haben hier nicht speziell weitergegeben, was wir haben wollen.
‫Wir haben also nicht gesagt, welche Zeichenfolge wir verwenden möchten, indem wir beispielsweise sagen, dass name mit einem Index beginnt oder was auch
‫immer.
‫Wir mussten nichts davon tun, denn, nun, entfernen Sie alle, die hier einen Delegierten erwarten, und das haben wir an
‫ihn weitergegeben.
‫Wenn das noch ein wenig verwirrend ist, keine Sorge, wir haben noch ein paar Beispiele, die Ihnen
‫auf jeden Fall helfen werden, Delegierte ein wenig besser zu verstehen, da wir selbst
‫einige erstellen und dann viel mehr daraus machen Sinn.
‫Wir sehen uns also im nächsten Video.