2010-11-25 15 views
4

Ich möchte nur mein Verständnis über die folgendenDelegierte, Lambdas, Action, Func, anonyme Funktionen

  • Delegierter überprüfen - eine Methode Unterschrift
  • Lambdas - anonyme Funktion
  • Anonymous Funktion - nur das
  • Aktion - Eine anonyme Funktion, die nichts zurück
  • Func - Eine anonyme Funktion, die etwas zurückgibt

hmm ... sie alle ähnliche Dinge tun, wie & Sie definieren, wann jeder benutzen?

sorry, ich nicht erklären gut

+1

Dies ist so breit, dass jeder Versuch, dies zu beantworten, nur eine Reihe weiterer Fragen hervorbringen wird. Lesen Sie die Grundlagen, und stellen Sie eher eine Frage, wenn Sie tatsächlich ein Problem haben oder eine Frage bezüglich einer bestimmten Verwendung haben. –

Antwort

8
  • Delegierter - es ist keine Methode Signatur. It is a type which encapsulates a method. Daher sollte eine Delegatendeklaration eine Signatur ähnlich der Methode haben, die sie einkapseln möchte. When to use Delegate - whenever you want to pass a method to another function. Für mehr siehe this und this.

  • Lambdas - kurze Hand und ausdrucksstärkere Art, eine anonyme Funktion zu schreiben. Aber da ist mehr. Ein Lambda-Ausdruck kann auch in einen Ausdrucksbaum konvertiert werden. Weitere Informationen finden Sie unter this.

  • Anonym Funktion - ja .. nur, dass

  • Aktion - Es ist ein Delegierter, der eine Funktion, die nichts zurückgibt einkapseln kann. Sie sollten es sich also als a type that can encapsulate an action vorstellen und es verwenden, wenn Sie eine Aktion übergeben müssen.

  • Func - Ein Delegat, das eine Funktion kapseln kann, die etwas zurückgibt. Aber Sie sollten es als a type that can encapsulate a transformation betrachten und verwenden, wenn Sie eine Transformation weitergeben möchten.

+0

Ich frage mich dann, warum kann ich nicht einen Delegierten statt einer 'Aktion' oder' Func' übergeben. –

+0

Action und Func sind Delegaten, die von .Net bereitgestellt werden. Also Sie, wenn Sie eine Instanz von Aktion wie Action erstellen myAction = myMethod; und passierst du einen Delegierten um. –

3

Versuchen Sie nicht, C# + um diese Funktionen zu sehen. Auch weil es keine strenge pragmatische Antwort auf Ihre Frage gibt.

Beginnen Sie mit einer funktionalen Programmierung, zum Beispiel versuchen Sie F zu lernen, um herauszufinden, was und wann Lambdas verwendet werden (eigentlich überall in einer funktionalen Sprache) und dann werden Sie die Dinge besser verstehen.

Es wird Ihre Gedanken öffnen und Sie dazu bringen, über imperative Programmierung oder gemischte Sprachen wie C# anders zu denken.

+1

Ich schaute auf einige F # Videos, sehr interessant esp. [der von Luca Bolognese] (http://channel9.msdn.com/blogs/pdc2008/tl11) @ PDC08. Aber ich bekomme nicht wirklich viel, dann habe ich aufgehört, diese zu beobachten, vielleicht sollte ich anfangen, sie wieder anzuschauen –

3

Action und Func sind nur Spezialfälle der Delegate. Delegate selbst ist etwas, das auf eine Methode verweist und verwendet werden kann, um sie aufzurufen.

Verwandte Themen