Nivel 6 — Genéricos y delegados
Delegados genéricos
Notas originales de SunDiaL · Ver fuente en inglés
Por supuesto, declarar tipos de delegado a mano una y otra vez es tedioso y, en realidad, innecesario. Con todas las herramientas vistas hasta ahora, lo que necesitas es crear un buen tipo de delegado genérico. Y eso es precisamente lo que el framework .Net proporciona ahora desde el principio.
Action
Action es un tipo de delegado genérico que representa una función que devuelve void. Admite hasta unos ocho parámetros, especificados mediante la sintaxis <>.
public void Main()
{
Action<string> log = Console.WriteLine;
log("Hello world");
}
Function<>
Func es igual que Action, salvo que devuelve un valor. También admite hasta unos ocho parámetros, más uno para la salida.
public void Main()
{
Func<int, string> conv = Convert.ToString;
string result = conv(5); //"5"
}
Predicate<>
Una forma abreviada de un Func<> que devuelve bool. Básicamente, una condición.
public bool IsPositive(int x)
{
return x>=0;
}
public void Main()
{
Preticate<int> condition = IsPositive;
condition(5); //true
}