Кто-либо может объяснить, каковы LINQ, Лямбда, Анонимные Методы, Делегаты имели в виду?
Как эти 3 отличаются друг для друга?
Каждый был заменим для другого?
Я не получил конкретного ответа, когда я сделал поиск с помощью Google
LINQ - это широкое название технологии, охватывающее большую часть .NET 3.5 и изменений C # 3.0; «запрос на языке» и многое другое.
Делегат можно сравнить с указателем на функцию; "дескриптор метода" как объект, если хотите, то есть
Func<int,int,int> add = (a,b) => a+b;
- это способ записи делегата, который я затем могу вызвать. Делегаты также поддерживают события и другие подходы обратного вызова.
Анонимные методы - это сокращение 2.0 для создания экземпляров делегатов, например:
someObj.SomeEvent += delegate {
DoSomething();
};
они также ввели полное закрытие в язык через «захваченные переменные» (не показаны выше). В C # 3.0 представлены лямбда-выражения, которые могут производить то же самое, что и анонимные методы:
someObj.SomeEvent += (s,a) => DoSomething();
, но которые также могут быть скомпилированы в деревья выражений для полного LINQ для (например) базы данных. Например, вы не можете запустить делегат для SQL Server! но:
IQueryable<MyData> source = ...
var filtered = source.Where(row => row.Name == "fred");
можно транслировать в SQL, поскольку он компилируется в дерево выражений ( System.Linq.Expression
).
Итак:
LINQ Лямбда-выражения анонимные методы делегируют
это полные объяснения из MSDN, большинство из них с примерами ...
Хотя название этой ссылки - Анонимные методы, она охватывает делегаты, анонимные методы и лямбда-выражения.