11
votes

C #: méthode anonyme vs méthode nommée

Je suis nouveau à la programmation et à la programmation et à l'apprentissage jour par jour avec des jargons Tech (C #).

Après googling pendant un moment, ci-dessous est ce que j'ai recherché sur méthodes

  1. Une méthode est un bloc de déclarations, qui sert à la réutilisation de code & Il soutient également la surcharge avec une signature différente ... pour ex: Drawshape (2Pts), Drawshape (3Pts) etc ...

  2. un anonyme est un avec un bloc de déclarations, mais non nom .... (comme son prématuré à poser, en WT, nous rencontrons Méthode anonyme ... Tous les articles, échantillons ...)

  3. Methode nommée : Voici lien mais À la fin, je n'ai pas reçu quelle méthode nommée est en réalité ...

    Quelqu'un peut-il expliquer quelle méthode "nommée" est et où utilisons-nous la méthode anonyme?


2 commentaires

5 Réponses :


0
votes

méthodes anonymes ou fonctions anonymes, ce qui semble être identique, essentiellement des délégués. En tant que lien que vous soulignez: http://msdn.microsoft.com/fr- US / Bibliothèque / BB882516.ASPX Décrit, les méthodes anonymes fournissent une manière simplifiée de passer la méthode à exécuter par une autre méthode. Comme un rappel. Une autre façon de la voir, pense aux expressions Lambda.

Un nommé par le contraste est une méthode courante.


0 commentaires

10
votes

Une méthode nommée est une méthode que vous pouvez appeler par son nom (par exemple. C'est une fonction qui a un nom). Par exemple, vous avez défini une fonction pour ajouter deux numéros: xxx

Vous appelez cette méthode par son nom comme: f (1, 2); .

La méthode anonyme est une méthode qui est transmise comme un argument à une fonction sans avoir besoin de son nom. Ces méthodes peuvent être construites à l'exécution ou évaluées à partir d'un Expression Lambda au moment de la compilation.

Ces méthodes sont souvent utilisées dans Queries LINQ , par exemple: xxx

l'expression x => x <10 est appelé expression lambda et son résultat est une fonction anonyme qui sera exécutée par la méthode où < /Code ,.


Vous êtes un débutant, je vous suggère d'abord de lire plus de choses de base. Découvrez les liens suivants:

0 commentaires

1
votes

Commençons à partir d'une méthode simple.

void MyMethod()
{
  Console.WriteLine("Inside MyMethod"); //Write to output
}


0 commentaires

0
votes

de MSDN:

Un délégué peut être associé à une méthode nommée. Lorsque vous instaniez un délégué en utilisant une méthode nommée, la méthode est transmise sous forme de paramètre. Ceci s'appelle à l'aide d'une méthode nommée. Les délégués construits avec une méthode nommée peuvent encapsuler soit une méthode statique, soit une méthode d'instance. Les méthodes nommées sont le seul moyen d'instancier un délégué dans des versions antérieures de C #. Cependant, dans une situation où la création d'une nouvelle méthode est indésirable, les frais généraux, C # vous permet d'instancer un délégué et de spécifier immédiatement un bloc de code que le délégué traitera lorsqu'il est appelé. Le bloc peut contenir une expression lambda ou une méthode anonyme.

et

Dans les versions de C # avant 2.0, le seul moyen de déclarer un délégué était d'utiliser des méthodes nommées. C # 2.0 Méthodes anonymes introduites et en C # 3.0 et ultérieure, les expressions Lambda remplacent les méthodes anonymes comme moyen privilégié d'écrire du code en ligne. Cependant, les informations sur les méthodes anonymes de ce sujet s'appliquent également aux expressions Lambda. Il y a un cas dans lequel une méthode anonyme fournit des fonctionnalités introuvables dans les expressions de Lambda. Les méthodes anonymes vous permettent d'omettre la liste des paramètres. Cela signifie qu'une méthode anonyme peut être convertie en délégués avec une variété de signatures. Ce n'est pas possible avec les expressions Lambda. Pour plus d'informations spécifiquement sur les expressions Lambda, voir Expressions Lambda (Guide de programmation C #). Créer des méthodes anonymes est essentiellement un moyen de passer un bloc de code en tant que paramètre délégué. En utilisant des méthodes anonymes, vous réduisez les frais généraux de codage dans l'instanciation des délégués car vous n'avez pas à créer une méthode distincte.

Ainsi, en réponse à votre question sur quand utiliser les méthodes anonymes, alors MSDN dit: Dans une situation où la création d'une nouvelle méthode est indésirable sur le dessus.

Dans mon expérience, il s'agit davantage d'une question de réutilisation et de lisibilité du code.

Liens:

http://msdn.microsoft.com/en-us/library/ 98DC08AC.aspx

http://msdn.microsoft.com/en-us/library/ 0YW3TZ5K.ASPX

espère que cela aide


0 commentaires

1
votes

explication par analogie

Normalement, lorsque nous racontions des histoires, nous nous référons aux personnes par nom:

"Freddie"

"Qui est Freddie?"

"Vous savez, Freddie, Freddie des ventes - Le gars masculin avec les cheveux roux, qui a brûlé le bâtiment ...?"

En réalité, personne ne se soucie Qui la personne est, département qu'il travaille, etc. Ce n'est pas comme si on ne se réfère à nouveau à lui. Nous voulons pouvoir dire: "Certains gars ont brûlé notre bâtiment". Toutes les autres choses (couleur de cheveux, nom, etc.) sont sans importance et / ou peuvent être déduites.

qu'est-ce que cela a à voir avec C #?

typiquement en C #, vous devriez définir une méthode si vous souhaitez l'utiliser: vous devez dire au compilateur (généralement):

  • ce qu'on appelle,
  • et ce qui y passe (paramètres + leurs types),
  • ainsi que ce qui devrait sortir (type de retour),
  • Et que ce soit quelque chose que vous puissiez faire dans la vie privée de votre maison ou si vous pouvez le faire en public. (Portée)

    Lorsque vous faites cela avec des méthodes, vous utilisez essentiellement Méthodes nommées . Mais écrivez-les: c'est beaucoup d'efforts. Surtout si tout cela peut être déduit et que vous n'allez plus jamais l'utiliser.

    C'est fondamentalement où les méthodes anonymes entrent. C'est comme une méthode jetable - quelque chose de rapide et de sale - il réduit le montant que vous devez taper. C'est essentiellement le but d'eux.


0 commentaires