2010-03-15 9 views
6

Necesito pasar un predicado que puedo invocar cuando quiero (como un delegado). Estoy tratando de hacer algo como esto (pensé predicado delegado podría satisfacer mis necesidades):Pasar una condición bool al método que puedo invocar cuando necesito

MyMethod(Predicate,string> pred); 

llama así: MyMethod(s => s.Length > 5);

Quiero escribir la línea condición, pero invocarlo cuando quiero, al igual un delegado ¿Cómo podría hacer esto>?

Gracias

+0

que acabas de hacer esto! – Grzenio

Respuesta

2

Al igual que el siguiente

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

Entonces

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

que lo haría exactamente igual que usted escribió:

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

    if(method(theString)) 
    { 
     //... 
    } 
} 
Cuestiones relacionadas