tutorial metodo expresiones español delegados anonimo c# delegates lambda invoke method-invocation

c# - metodo - MethodInvoke delegado o expresión lambda



linq lambda c# (3)

1) La expresión lambda es algo más corta y más limpia

2) Sí

3) Podría usar el tipo de acción, como este:

Invoke(new Action( () => { checkedListBox1.Items.RemoveAt(i); checkedListBox1.Items.Insert(i, temp + validity); checkedListBox1.Update(); } ) );

¿Cuál es la diferencia entre los dos?

Invoke((MethodInvoker) delegate { checkedListBox1.Items.RemoveAt(i); checkedListBox1.Items.Insert(i, temp + validity); checkedListBox1.Update(); } );

vs

Invoke((MethodInvoker) ( () => { checkedListBox1.Items.RemoveAt(i); checkedListBox1.Items.Insert(i, temp + validity); checkedListBox1.Update(); } ) );

¿Hay alguna razón para usar la expresión lambda? Y es (MethodInvoker) delegado de casting y lambda en el tipo MethodInvoker? ¿Qué tipo de expresión no requeriría un elenco (MethodInvoker) ?


Los dos enfoques son equivalentes. El primero se conoce como método anónimo y es una capacidad anterior de .NET 2.0. La lambda no debería requerir un yeso.

Preferiría la lambda, porque tiene un uso más ubicuo en el desarrollo moderno de C # / .net. El delegado anónimo no ofrece nada sobre la lambda. El lambda permite la inferencia de tipo, que en algunos casos va desde lo conveniente a lo necesario.


MethodInvoker proporciona un delegado simple que se utiliza para invocar un método con una lista de parámetros vacía. Este delegado se puede usar cuando se realizan llamadas al método Invoke de un control, o cuando se necesita un delegado simple pero no se quiere definir uno.

una Acción por otro lado puede tomar hasta 4 parámetros.