English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O C# contém tipos de delegates genéricos integrados Func e Action, portanto, na maioria das vezes, você não precisa definir delegates personalizados manualmente.
A classe Func, contida no espaço de nomes System, é uma delegate genérica. Ela possui zero ou mais parâmetros de entrada e um out Parâmetros. O último parâmetro é considerado parâmetro out.
O delegate Func representa delegates com tipo de retorno.
A classe Func, definida no espaço de nomes System, define um parâmetro in e um parâmetro out do delegate, conforme mostrado a seguir:
namespace System { public delegate TResult Func<in T, out TResult>(T arg); }
O último parâmetro dentro dos colchetes <> é considerado o tipo de retorno, os outros parâmetros são considerados tipos de parâmetros de entrada, conforme mostrado na figura a seguir.
Delegado Func com dois parâmetros de entrada e um parâmetro de saída será como mostrado a seguir.
O seguinte delegado Func aceita dois parâmetros do tipo int e retorna um valor do tipo int:
Func<int, int, int> sum;
Você pode atribuir qualquer método aos func delegados acima, que precisam de doisintparâmetros e retorna umintvalor.
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
O tipo de delegado Func pode incluir de 0 a16parâmetros de entrada diferentes. No entanto, deve conter um parâmetro out para o resultado. Por exemplo, o seguinte delegado Func não tem parâmetros de entrada e apenas contém parâmetros out.
Func<int> getRandomNumber;
Func pelo menos 0 parâmetros de entrada, até16um parâmetro de entrada, retornando genéricamente com base no valor de retorno. Deve haver um valor de retorno, não void.
Func<int> indica que não há parâmetros de entrada, o valor de retorno é int do delegado.
Func<object, string, int> indica que os parâmetros de entrada são object, string e o valor de retorno é int do delegado.
Func<object, string, int> indica que os parâmetros de entrada são object, string e o valor de retorno é int do delegado.
Func<T1,T2,T3,int> indica que o parâmetro de entrada é T1,T2,T3(Gênico), delegado que retorna um tipo int.
Você pode usar a palavra-chave delegate para atribuir um método anônimo a um delegado Func.
Func<int> getRandomNumber = delegate() { Random rnd = new Random(); return rnd.Next(1, 100); };
Func delegado também pode ser usado com expressão lambda, conforme mostrado a seguir:
Func<int> getRandomNumber = () => new Random().Next()1, 100); //ou Func<int, int, int> Sum = (x, y) => x + y;
Func é um tipo de delegado interno.
O tipo de delegado Func deve retornar um valor.
O tipo de delegado Func pode ter de zero a16um parâmetro de entrada.
O tipo de delegado Func não permite parâmetros ref e out.
O tipo de delegado Func pode ser usado junto com métodos anônimos ou expressões lambda.