English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Action é um tipo de delegado definido no espaço de nomes System. O tipo de delegado Action é idêntico ao tipo de delegado Func, exceto que o delegado Action não retorna valor. Em outras palavras, o delegado Action pode ser usado com métodos que têm tipo de retorno void.
Action<T> é um delegado genérico integrado ao .NET Framework, que pode ser usado para passar métodos como parâmetros usando o delegado Action<T>, sem a necessidade de declarar um delegado personalizado. O método encapsulado deve corresponder ao sinal de chamada do delegado definido. Em outras palavras, o método encapsulado deve ter um parâmetro passado por valor e não pode ter valor de retorno.
Por exemplo, o seguinte delegado imprime um valor int.
public delegate void Print(int val); static void ConsolePrint(int i) { Console.WriteLine(i); } static void Main(string[] args) { Print prnt = ConsolePrint; prnt(10); }
10
Você pode usar o delegado Action em vez do delegado Print definido anteriormente, por exemplo:
static void ConsolePrint(int i) { Console.WriteLine(i); } static void Main(string[] args) { Action<int> printActionDel = ConsolePrint; printActionDel(10); }
Você pode usar a palavra-chave new ou atribuir diretamente um método para inicializar o delegado Action:
Action<int> printActionDel = ConsolePrint; //ou Action<int> printActionDel = new Action<int>(ConsolePrint);
O delegado Action pode aceitar no máximo16parâmetros de entrada de diferentes tipos.
Você também pode atribuir um método anônimo ao delegado Action, por exemplo:
static void Main(string[] args) { Action<int> printActionDel = delegate(int i) { Console.WriteLine(i); }; printActionDel(10); }
10
A expressão Lambda também pode ser usada com o delegado Action:
static void Main(string[] args) { Action<int> printActionDel = i => Console.WriteLine(i); printActionDel(10); }
Portanto, você pode usar qualquer método que não utilize o tipo de valor de retorno do delegado Action.
O delegado Action pode aceitar pelo menos 0 parâmetros, até16um parâmetro, sem valor de retorno.
Action representa um delegado sem parâmetros de entrada, sem valor de retorno.
Action<int, string> representa um delegado com parâmetros de entrada int, string, sem valor de retorno.
Action<int, string, bool> representa um delegado com parâmetros de entrada int, string, bool, sem valor de retorno.
Action<int, int, int, int> significa que há entrada4um parâmetro do tipo int, sem valor de retorno.
Definir delegados de forma rápida e fácil.
Fazer o código mais curto.
Tipos compatíveis em todo o aplicativo.
O delegado Action é o mesmo que o Func delegado, mas o Action delegado não retorna nada. O tipo de retorno deve ser void.
O delegado Action pode ter de 0 a16um parâmetro de entrada.
O delegado Action pode ser usado com métodos anônimos ou expressões lambda.