English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C# contiene tipos de delegados genéricos integrados como Func y Action, por lo que en la mayoría de los casos no es necesario definir delegados personalizados manualmente.
Func es un delegado genérico incluido en el espacio de nombres System. Tiene cero o más parámetros de entrada y un out Parámetros. El último parámetro se considera parámetro out.
El delegado Func representa un delegado con tipo de retorno.
Func define un parámetro in y un parámetro out en el espacio de nombres System del delegado, como se muestra a continuación:
namespace System { public delegate TResult Func<in T, out TResult>(T arg); }
El último parámetro entre corchetes <> se considera el tipo de retorno, y los demás parámetros se consideran tipos de parámetros de entrada, como se muestra en la siguiente imagen.
La función delegada Func con dos parámetros de entrada y un parámetro de salida se mostrará a continuación.
La función delegada siguiente acepta dos parámetros de tipo int y devuelve un valor de tipo int:
Func<int, int, int> sum;
Puede asignar cualquier método a la función delegada func superior, que necesita dosintparámetros y devuelve unintvalor.
class Program { static int Sum(int x, int y) { return x + y; } static void Main(string[] args) { Func<int, int, int> add = Sum; int result = add(10, 10); Console.WriteLine(result); } }
20
El tipo de función delegada Func puede incluir de 0 a16parámetros de entrada de diferentes tipos. Pero, debe contener un parámetro out para el resultado. Por ejemplo, la función delegada Func siguiente no tiene parámetros de entrada y solo contiene parámetros out.
Func<int> getRandomNumber;
Func tiene al menos 0 parámetros de entrada, hasta16un parámetro de entrada, según el retorno de tipo genérico. Debe haber un valor de retorno, no void.
Func<int> indica que no hay parámetros de entrada, el valor de retorno es la delegación de tipo int.
Func<object,string,int> indica que los parámetros de entrada son object, string y el valor de retorno es la delegación de tipo int.
Func<object,string,int> indica que los parámetros de entrada son object, string y el valor de retorno es la delegación de tipo int.
Func<T1,T2,,T3,int> indica que el parámetro de entrada es T1,T2,,T3(genérico), delegación que devuelve un valor de tipo int.
Puede usar la palabra clave delegate para asignar un método anónimo a la función delegada Func.
Func<int> getRandomNumber = delegate() { Random rnd = new Random(); return rnd.Next(1, 100); };
La función delegada Func también se puede usar con expresiones lambda, como se muestra a continuación:
Func<int> getRandomNumber = () => new Random().Next()1, 100); //o Func<int, int, int> Sum = (x, y) => x + y;
Func es un tipo de delegado integrado.
El tipo de delegado Func debe retornar un valor.
El tipo de delegado Func puede tener de cero a16Un parámetro de entrada.
El tipo de delegado Func no permite parámetros ref y out.
El tipo de delegado Func se puede usar junto con métodos anónimos o expresiones lambda.