LINQ ist ein umfassender Technologie-Name, der einen Großteil der .NET 3.5- und C# 3.0-Änderungen abdeckt; "Abfrage in der Sprache" und Tonnen mehr.
Ein Delegat ist vergleichbar mit einem Funktionszeiger; ein „Verfahren handle“ als Objekt, wenn man so will, das heißt
Func<int,int,int> add = (a,b) => a+b;
ist ein Art und Weise, einen Delegierten zu schreiben, die ich dann anrufen können. Die Delegierten unterstützen auch Eventing- und andere Callback-Ansätze.
Anonyme Methoden sind die 2.0 Kurz Hand für Delegierten Fälle zu schaffen, zum Beispiel:
someObj.SomeEvent += delegate {
DoSomething();
};
sie auch die vollen Verschlüsse in die Sprache über „eingefangen Variablen“ (oben nicht gezeigt) eingeführt. C# 3.0 führt Lambdas, die die gleiche wie anonyme Methoden produzieren können:
someObj.SomeEvent += (s,a) => DoSomething();
aber die kann auch in Ausdrucksbaumstrukturen für die vollständige LINQ gegen (zum Beispiel) kompiliert werden einer Datenbank. Sie können beispielsweise keinen Delegaten für SQL Server ausführen! aber:
IQueryable<MyData> source = ...
var filtered = source.Where(row => row.Name == "fred");
kann in SQL übersetzt werden, wie es in einem Ausdrucksbaum zusammengestellt (System.Linq.Expression
).
So:
- eine anonyme Methode verwendet werden kann, einen Delegaten
- eine Lambda zu schaffen das gleiche wie ein Anon-Methode sein könnte, aber nicht unbedingt
Es gibt 4 Dinge in dieser Liste ... –
@Sri Kumar: Ich habe nicht abgestimmt, aber ich würde vermuten, es ist eine Mischung aus der Tatsache, dass dies leicht verfügbare Informationen und das ist Ihr Englisch ist nicht perfekt. –