2010-04-16 21 views
14
  1. ¿Alguien puede explicar qué significan los LINQ, Lambda, Métodos anónimos, Delegados?LINQ vs Lambda vs Métodos anónimos vs Delegados

  2. ¿Cómo estos 3 son diferentes el uno para el otro?

  3. ¿Se puede reemplazar uno por otro?

no he tenido ninguna respuesta concreta cuando lo hice buscar en Google

+4

hay 4 cosas en esa lista ... –

+3

TheHurt

+0

@Sri Kumar: No voté hacia abajo, pero yo supongo que es una mezcla entre el hecho de que esta información es fácilmente disponible y que su Inglés no es perfecto. –

Respuesta

29

LINQ es un nombre de tecnología amplia que cubre una gran parte de .NET 3.5 y los cambios de C# 3.0; "consulta en el idioma" y mucho más.

Un delegado es comparable a un puntero a función; un "mango método" como un objeto, si se quiere, es decir,

Func<int,int,int> add = (a,b) => a+b; 

es una forma de escribir un delegado que entonces puedo llamar. Los delegados también apuntalan los eventos y otros enfoques de devolución de llamada.

métodos anónimos son el 2,0 corta a mano para crear instancias de delegado, por ejemplo:

someObj.SomeEvent += delegate { 
    DoSomething(); 
}; 

también introdujeron cierres completos a la lengua a través de "variables capturados" (no se muestra más arriba). C# 3.0 introduce lambdas, que puede producir el mismo que los métodos anónimos:

someObj.SomeEvent += (s,a) => DoSomething(); 

pero que puede también ser compilado en árboles de expresión para la plena LINQ contra (por ejemplo) una base de datos. ¡No puede ejecutar un delegado contra SQL Server, por ejemplo! pero:

IQueryable<MyData> source = ... 
var filtered = source.Where(row => row.Name == "fred"); 

puede ser traducido en SQL, ya que se compila en un árbol de expresión (System.Linq.Expression).

Así:

  • un método anónimo se puede utilizar para crear un delegado
  • una lambda podría ser el mismo que un anon-método, pero no necesariamente
1

Aunque el El título de este enlace es Anonymous methods y abarca delegados, métodos anónimos y expresiones lambda.

Cuestiones relacionadas