| 

.NET C# Java Javascript Exception

3
Ich habe dazu leider nichts gefunden.

Ich benutze ein Lambda-Ausdruck als ein Delegate, dieser Ausdruck wird sehr oft aufgerufen. Ich habe aktuell keine Performance-Probleme, wollte aber wissen ob da jedesmal eine neues Objekt angelegt wird oder ob der Compiler da vielleicht cached.
News:
26.07.2009
provita 83 2 4
2 Antworten
4
Der Compiler erstellt für den Lambda-Ausdruck eine Methode und einen cached anoynmous delegate. D.h. der Compiler verwendet die selbe Methode jedesmal.

Interessanter Hinweis in diesem Zusammenhang sind [Closures][1].


[1]: http://de.wikipedia.org/wiki/Closure
26.07.2009
gfoidl 9,4k 3 5
1
Ah, ok super, vielen Dank.
Könntest du vielleicht den Zusammenhand mit den Closures noch erklären? Was ein Closure ist, ist mir bekannt, leider kann ich es nicht in Verbindung zu Lambdas setzten.
provita 26.07.2009
2
Könnte ich dir erklären, aber der Artikel http://www.mycsharp.de/wbb2/thread.php?threadid=74181 beschreibt es schon ausführlich. Daher verweise ich auf diesen.
gfoidl 27.07.2009
1
Super Artikel. Herzlichen Dank
provita 27.07.2009
0
Als Ergänzung zu gfoidl's Antwort: Das Caching findet nur statt, wenn man _keine_ Closure nutzt, also keine externen Variablen nutzt. Wenn man externe Variablen nutzt, dann muss jedes Mal ein neues delegate-Objekt erzeugt werden.
08.09.2011
Marvin Steppat 4,0k 1 4 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH