LINQ по сравнению с лямбдой по сравнению с анонимными методами по сравнению с делегатами

  1. Кто-либо может объяснить, каковы LINQ, Лямбда, Анонимные Методы, Делегаты имели в виду?

  2. Как эти 3 отличаются друг для друга?

  3. Каждый был заменим для другого?

Я не получил конкретного ответа, когда я сделал поиск с помощью Google

15
задан Mark Canlas 11 May 2010 в 14:09
поделиться

3 ответа

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 ).

Итак:

  • анонимный метод может использоваться для создания делегата
  • лямбда может быть таким же, как анонимный метод, но не обязательно
32
ответ дан 1 December 2019 в 01:53
поделиться

LINQ Лямбда-выражения анонимные методы делегируют

это полные объяснения из MSDN, большинство из них с примерами ...

0
ответ дан 23 October 2019 в 21:06
поделиться

Хотя название этой ссылки - Анонимные методы, она охватывает делегаты, анонимные методы и лямбда-выражения.

1
ответ дан 23 October 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: