Gegen Internetzensur
Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:
  • Flickr Photos

    www.flickr.com
5. Dez
Die

Delikat: Predicate, Delegate – Anonyme Funktionen. Und wie?

Mal aus der Riege C#, die 2., weil ich vor ungefähr einer halben Stunde (Pausen ausgenommen) über das nicht sofort offensichtlich lösbare Problem stolperte, anonyme Methoden einzubinden. Oder anzuwenden.

Folgendes Szenario:

Eine generische Liste List soll von sämtlichen Elementen befreit werden, auf die ein bestimmtes Kriterium zutrifft. Dazu ist die Funktion RemoveAll() der Klasse List zuständig, deren Signatur wie folgt aussieht:

  1. public int RemoveAll ( Predicate match )

Dieses Predicate kann einem den letzten Nerv rauben. Um es kurz zu fassen, die Definition der anonymen Methode (bzw. Funktion) an dieser Stelle funktioniert nach folgendem Schema:

  1. delegate(T arg) {}

An einem Beispiel: Aus einer String-Liste sollen sämtliche leeren Strings entfernt werden.

  1. List list;
  2. // … die Liste wird gefüllt …
  3. list.RemoveAll( delegate( String str ) {
  4.         return String.IsNullOrEmpty(str);
  5.         } );

Wieder ein Problem weniger. :)

2 Antworten zu „Delikat: Predicate, Delegate – Anonyme Funktionen. Und wie?”

  1. [...] Vergleich wird platzsparend in Form einer anonymen Funktion (delegate) durchgeführt, das [<a [...]

  2. #2~Pascal-910

    Danke, hat mir mal prompt weitergeholfen :)