2010-03-15 5 views
6

Ho bisogno di passare un predicato che posso invocare quando voglio (proprio come un delegato). Sto cercando di fare qualcosa di simile (ho pensato predicato delegato potesse soddisfare le mie esigenze):Passare una condizione bool a un metodo che posso richiamare quando ho bisogno di

MyMethod(Predicate,string> pred); 

Chiamato come: MyMethod(s => s.Length > 5);

voglio scrivere la condizione in linea MA invocarlo quando voglio, proprio come un delegato. Come potrei fare questo>?

Grazie

+0

hai appena fatto questo! – Grzenio

risposta

2

Come il seguente

bool MyMethod(Predicate<string> pred) { 
    ... 
    if (pred("foo")) { ... 
    } 
} 

Poi

MyMethod(s => s.Length > 5); 
3

lo fareste esattamente come hai scritto:

void MyMethod(Func<string, bool> method) // Could be Predicate<string> instead 
{ 
    // Do something 
    // ... 
    // Later, if you choose to invoke your method: 

    if(method(theString)) 
    { 
     //... 
    } 
} 
Problemi correlati