LINQ、Lambda、Anonymous Methods、Delegatesの意味を誰かが説明できますか?
これら3つは互いにどのように異なりますか?
あるものを別のものと交換できましたか?
グーグルをしたとき、具体的な答えが得られませんでした
LINQ、Lambda、Anonymous Methods、Delegatesの意味を誰かが説明できますか?
これら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の式ツリーにコンパイルすることもできます。たとえば、SQLServerに対してデリゲートを実行することはできません。しかし:
IQueryable<MyData> source = ...
var filtered = source.Where(row => row.Name == "fred");
式ツリー()にコンパイルされるため、SQLに変換できSystem.Linq.Expression
ます。
それで: