2010-11-25 23 views
4

Je veux juste vérifier ma compréhension sur les points suivantsdélégués, lambdas, Action, Func, Anonymous Fonctions

  • Délégué - une signature de méthode
  • lambdas - fonction anonyme
  • Anonyme Fonction - juste que
  • Action - Une fonction anonyme que ne retourne rien
  • Func - Une fonction anonyme qui retourne quelque chose

hmm ... ils font tous des choses semblables, comment définissez-vous & savoir quand utiliser chacun?

désolé, je ne l'explique pas bien

+1

Ceci est si large que toute tentative pour répondre à cette question ne fera que générer un tableau de plus de questions. Lisez les principes de base et posez plutôt une question lorsque vous rencontrez réellement un problème ou avez une question concernant une utilisation spécifique de celui-ci. –

Répondre

8
  • Délégué - il n'est pas une signature de méthode. It is a type which encapsulates a method. Par conséquent, une déclaration de délégué doit avoir une signature similaire à la méthode qu'il veut encapsuler. When to use Delegate - whenever you want to pass a method to another function. Pour plus d'informations, voir this et this.

  • Lambdas - abrégé et plus expressif pour l'écriture d'une fonction anonyme. Mais il y a plus que cela. Une expression lambda peut également être convertie en une arborescence d'expression. Pour plus voir this.

  • Anonyme Fonction - oui .. juste que

  • action - Il est un délégué qui inclut une fonction qui ne retourne rien. Vous devriez donc penser à a type that can encapsulate an action et l'utiliser lorsque vous avez besoin de passer une action.

  • Func - Un délégué qui peut encapsuler une fonction qui renvoie quelque chose. Mais vous devriez le regarder comme a type that can encapsulate a transformation et l'utiliser lorsque vous voulez passer une transformation.

+0

Je me demande alors, pourquoi je ne peux pas passer un délégué à la place d'un 'Action' ou 'Func'. –

+0

Action et Func sont des délégués qui sont fournis par .Net. Donc vous quand vous créez une instance d'Action comme Action myAction = myMethod; et passez-le, vous passez un délégué. –

3

Ne pas essayer de voir C# + ces caractéristiques. Aussi parce qu'il n'y a pas de réponse pragmatique stricte à votre question. Commencez d'un point de vue de la programmation fonctionnelle, par exemple, essayez d'apprendre F # pour savoir quand et quand les lambdas sont utilisés (en fait partout dans un langage fonctionnel) et vous comprendrez mieux les choses.

Cela ouvrira votre esprit et vous fera penser différemment à propos de la programmation impérative ou des langages mixtes comme C#.

+1

J'ai regardé quelques vidéos F #, très intéressant esp. [celui de Luca Bolognese] (http://channel9.msdn.com/blogs/pdc2008/tl11) @ PDC08. Mais je n'ai pas vraiment beaucoup, alors j'ai arrêté de les regarder, peut-être que je devrais commencer à les regarder à nouveau –

3

Action et Func sont des cas particuliers que de la Delegate. Le délégué lui-même est quelque chose qui fait référence à une méthode et peut être utilisé pour l'appeler.