-
Может ли кто-нибудь объяснить, что означает LINQ, Lambda, Anonymous Methods, делегаты?
-
Как эти 3 отличаются друг от друга?
-
Был ли один сменный для другого?
Я не получил никакого конкретного ответа, когда я сделал Googling
Может ли кто-нибудь объяснить, что означает LINQ, Lambda, Anonymous Methods, делегаты?
Как эти 3 отличаются друг от друга?
Был ли один сменный для другого?
Я не получил никакого конкретного ответа, когда я сделал Googling
LINQ - это широкое название технологии, охватывающее большой фрагмент .NET 3.5 и изменения С# 3.0; "запрос на языке" и т.д.
Делегат сопоставим с указателем функции; "обработчик метода" как объекта, если хотите, т.е.
Func<int,int,int> add = (a,b) => a+b;
- это способ записи делегата, который я могу вызвать. Делегаты также поддерживают опознавательный и другие методы обратного вызова.
Анонимные методы - это 2,0 коротких рук для создания экземпляров делегатов, например:
someObj.SomeEvent += delegate {
DoSomething();
};
они также вводили полные замыкания в язык через "захваченные переменные" (не показано выше). В С# 3.0 вводится lambdas, который может создавать такие же анонимные методы:
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, большинство из которых с примерами...