Frage

    

Diese Frage bereits eine Antwort hier:

         

Ich habe gelesen, dass Lambda-Ausdrücke sind eine unglaublich leistungsstarke Ergänzung zu C #, aber ich finde ich von ihnen mystifiziert. Wie können sie mein Leben verbessern oder zu meinen Code besser machen? Kann jemand für das Lernen, solche Ausdrücke auf eine gute Ressource verweisen?

Sie scheinen kühl wie die Hölle, aber wie sind sie mit meinem Tag zu Tag das Leben als asp.net Entwickler?

Edit: Danke für die Beispiele, und danke für den Link zu Eric White Artikel. Ich bin zu verdauen noch die jetzt. Eine kurze Frage: sind Lambda-Ausdrücke, die für etwas anderes als die Abfrage? Jedes Beispiel, das ich gesehen habe, war ein Abfrage-Konstrukt.

War es hilfreich?

Lösung

  

: sind Lambda-Ausdrücke, die für etwas anderes als die Abfrage

Lamba Ausdrücke sind nicht viel anders als eine bequeme Möglichkeit, eine Funktion ‚in-line‘ zu schreiben.

Sie sind also nützlich jeden Ort, den Sie ein Stück Code gesucht, die als genannt werden kann, obwohl es sich um eine separate Funktion ist aber die tatsächlich innerhalb seiner Anrufer geschrieben. (Zusätzlich zu halten zugehörigen Code in der gleichen Position in einer Datei, diese ermöglicht es Ihnen auch Spaß Spiele mit variabler Scoping zu spielen - vgl. ‚Verschlüsse‘ für eine Referenz)

Ein Beispiel für eine nicht-Abfrage bezogene Verwendung eines lamba vielleicht ein bisschen von Code sein, der etwas asynchron tut, dass Sie mit ThreadPool.QueueUserWorkItem starten. Der wichtige Punkt ist, dass Sie dies auch mit einem anonymen Delegierten schreiben könnte (die eine C # 2 Einführung waren), oder nur eine einfache separate Klasse Member-Funktion.

Das http://blogs.msdn.com/jomo_fisher /archive/2005/09/13/464884.aspx ist eine hervorragende Schritt-für-Schritt-Einführung in all diesem Zeug, das Ihnen vielleicht helfen.

Andere Tipps

Lambdas bringen funktionale Programmierung in C #. Sie sind anonyme Funktionen, die als Werte für bestimmte andere Funktionen übergeben werden können. Verwendet den meisten in LINQ.

Hier ist ein konstruiertes Beispiel:

List<int> myInts = GetAll();
IEnumerable<int> evenNumbers = myInts.Where(x => x % 2 == 0);

Wenn Sie nun foreach durch evenNumbers die Lamda

x=> x % 2 == 0

wird dann als Filter myInts angewendet.

Sie werden wirklich nützlich in die Lesbarkeit zu komplizierten Algorithmen erhöht wird, die viele verschachtelte IF Bedingungen und Schleifen haben würde.

Hier ist ein einfaches Beispiel für etwas kühlen Sie können mit lambda tun:

List<int> myList = new List<int>{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
myList.RemoveAll(x => x > 5);
//myList now == {1,2,3,4,5}

Die RemoveAll Methode nimmt ein Prädikat (einen Delegaten, argurments und gibt einen bool nimmt), alle, die es entfernt bekommen lassen. einen Lambda-Ausdruck macht es einfacher als das Prädikat tatsächlich deklariert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top