Bernhard  GrojerPredicate<T> in C# 3.0



Funktionen/Methoden schreiben ist einfach. Paramter übergeben auch.

Schon mal eine Methode definiert die indirekt “Code” (einen Predicate<T>) als Parameter übernimmt?

Mithilfe eines Predicate<T> ermöglichen Sie die übergabe eines Delegates und schaffen somit die Möglichkeit Ihre eigene dynamischen (strongly Typed) Filter zu erstellen.

Wie kanns aussehen?

Zuerst die Funktion definieren die einen Predicate<T> als Paramter nimmt:

   1: public static class Demo1   
   2: {   
   3:     public static List<Demo> GetDemos(Predicate<Demo> p)
   4:     {
   5:         var lst = GetList(); //Ladet eine Liste die gefiltert werden soll   
   6:         foreach (v i in lst) 
   7:         {
   8:             if (p(i))
   9:                 yield return i;
  10:         }
  11:     }
  12: }

Aufruf:

   1: var lst = Demo1.GetDemos(
   2:                 delegate(Demo d) 
   3:                     {
   4:                         return (d.Active && d.Name == "Test");
   5:                     }
   6:                );
Und somit sollten auch die Technolgien die hinter LINQ stecken wieder etwas verständlicher werden.


Kategorien: 26.01.2009 22:04:12


 


Neuen Kommentar einfügen:

  Titel:   
  Name:
  E-Mail:
  Kommentar:

 
 


Kommentare




© Copyright 2008 ppedv AG