method - if lambda c#
LINQ vs Lambda vs métodos anónimos vs delegados (3)
LINQ es un nombre de tecnología amplia que abarca 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 de función; un "manejador de método" como un objeto, si lo desea, es decir,
Func<int,int,int> add = (a,b) => a+b;
es una forma de escribir un delegado al que puedo llamar. Los delegados también apuntalan los eventos y otros enfoques de devolución de llamada.
Los métodos anónimos son los 2.0 abreviados para crear instancias delegadas, por ejemplo:
someObj.SomeEvent += delegate {
DoSomething();
};
también introdujeron cierres completos en el idioma a través de "variables capturadas" (no se muestran arriba). C # 3.0 introduce lambdas, que puede producir lo mismo que los métodos anónimos:
someObj.SomeEvent += (s,a) => DoSomething();
pero que también se puede compilar en árboles de expresión para LINQ completo 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");
se puede traducir a SQL, ya que se compila en un árbol de expresiones ( System.Linq.Expression
).
Asi que:
- un método anónimo puede usarse para crear un delegado
- una lambda podría ser lo mismo que un método anónimo, pero no necesariamente
¿Alguien puede explicar a qué se refieren los LINQ, Lambda, Métodos anónimos, Delegados?
¿Cómo estos 3 son diferentes el uno para el otro?
¿Uno era reemplazable por otro?
No obtuve ninguna respuesta concreta cuando hice Google
Los delegados de los métodos anónimos LINQ Lambda Expressions
esas son las explicaciones completas de MSDN, la mayoría con ejemplos ...
Aunque el título de este enlace es métodos anónimos cubre delegados, métodos anónimos y expresiones lambda.