Est-ce que quelqu'un pourrait expliquer ce que les méthodes anonymes sont en C# (en termes simplistes) et fournir des exemples possibles s'il vous plaîtQuelles sont les méthodes anonymes en C#?
Répondre
Des méthodes anonymes ont été introduites dans C# 2 pour créer des instances déléguées sans avoir à écrire une méthode séparée. Ils peuvent capturer variables locales dans la méthode englobante, ce qui en fait une forme fermeture.
Une méthode anonyme ressemble à quelque chose comme:
delegate (int x) { return x * 2; }
et doit être converti en un type délégué spécifique, par exemple via la cession:
Func<int, int> foo = delegate (int x) { return x * 2; };
... ou abonnez-vous un gestionnaire d'événements:
button.Click += delegate (object sender, EventArgs e) {
// React here
};
Pour plus d'informations, voir:
- Mon article (écrit il y a longtemps) sur delegate changes in C# 2
- MSDN on anonymous methods
- Chapitre 5 sur C# in Depth si vous avez envie d'acheter mon livre :)
Notez que les expressions lamdba en C# 3 ont presque méthodes anonymes complètement remplacé (même si elles sont encore tout à fait valable bien sûr). Les méthodes anonymes et expressions lambda sont collectivement décrites comme fonctions anonymes.
Il est également utile d'ajouter que les méthodes anonymes existent dans la portée locale, ce qui signifie qu'elles ne peuvent pas être partagées ailleurs dans le programme ni exposer l'ensemble. Si vous avez besoin de réutiliser le code, vous devez écrire une méthode dédiée qui peut être appelée. – Damian
@Damian: Je ne pense pas que ça vaille la peine d'appeler ça - je ne me souviens pas que ça soit apparu comme quelque chose que quelqu'un a * voulu * faire (contrairement aux types anonymes *). Je pense que c'est évident à cause de la syntaxe. –
Une méthode anonyme est un bloc de code qui est utilisé où une méthode serait généralement nécessaire et qui n'a pas de nom (donc anonyme).
de sorte que vous feriez pas besoin de créer une classe alors? Et je suppose que la méthode peut être appelée à partir de toute autre méthode? – James
@James - Non, vous n'avez pas besoin de créer une classe pour contenir la méthode anonyme. La méthode peut être appelée à partir de n'importe quel endroit où elle a été transmise - vous ne pouvez pas l'appeler à une date ultérieure sans y faire référence - elle est anonyme. –
Merci, pouvez-vous spécifier un cas où une méthode anonyme pourrait être nécessaire? – James
méthode anonyme est la méthode qui ne fonctionne tout simplement pas le nom et cette méthode est déclarée en place, par exemple:
Button myButton = new Button();
myButton .Click +=
delegate
{
MessageBox.Show("Hello from anonymous method!");
};
Est-ce implicitement une action? Si je voudrais l'assigner à une variable, puis ajouter la variable à myButton.Click, je devrais utiliser EventHandler pour le type de variable même s'il n'utilise pas les paramètres. –
Ce sont des méthodes sans nom.
Par exemple, la méthode ordinaire est:
public void Foo()
{
Console.WriteLine("hello");
}
Bien que la méthode anonyme peut être:
myList.ForEach(item => Console.WriteLine("Current item: " + item));
Le code intérieur du ForEach
est en fait une méthode, mais n'a pas de nom et vous ne pouvez pas appeler de l'extérieur.
Ce n'est pas une méthode anonyme - c'est une expression de lamdba. Les expressions lambda et les méthodes anonymes sont collectivement appelées fonctions anonymes. –
Merci @Jon je voulais juste coller avec des mots simples par la demande OP "en termes simplistes". Salutations pour 300K! ;) –
- 1. Quelles sont exactement les fonctions anonymes?
- 2. Les méthodes anonymes sont des pointeurs
- 3. Quels sont les types anonymes en C#?
- 4. Méthodes anonymes - C# à VB.NET
- 5. quelles sont les méthodes déléguées disponibles UIButton
- 6. différence entre les expressions lambda et les méthodes anonymes - C#
- 7. Quelles sont les principales spécifications C/C++?
- 8. Modèle/architecture/méthodes anonymes
- 9. Quelles sont les méthodes qui affectent leurs paramètres explicites?
- 10. En C#. Quelles sont les différences entre String et string?
- 11. Quelles méthodes sont couvertes par un pointcut?
- 12. Quelles sont les principales méthodes/bibliothèques disponibles pour l'analyse XML?
- 13. quelles sont les interfaces les plus utilisées en C#?
- 14. Méthodes et types anonymes
- 15. Quelles sont les méthodes équivalentes des fonctions API natives suivantes?
- 16. Quelles sont les méthodes disponibles pour stocker des fichiers séquentiels?
- 17. Quelles sont les fonctionnalités de C++?
- 18. Quelles méthodes sont disponibles pour afficher les fichiers sur iPhone?
- 19. Quelles sont les méthodes de redirection alternatives à meta refresh?
- 20. Méthodes et délégués anonymes
- 21. VB.NET RemoveHandler & Méthodes anonymes
- 22. Génération d'IL pour les méthodes anonymes
- 23. Quelles sont toutes les méthodes de $ .couch que CouchApp simplifie?
- 24. Confusion sur les méthodes anonymes paramètres
- 25. accèderont à « ce » dans les méthodes anonymes
- 26. Fermetures de méthodes anonymes imbriquées en javascript
- 27. Quelles sont les méthodes Delegate de la vue modale?
- 28. Quelles sont les méthodes d'organisation des tâches dans Pivotal Tracker?
- 29. Quelles sont les différences entre ces méthodes de tableau?
- 30. Quelles sont les méthodes de déploiement de production dans SharePoint?
Vous pouvez trouver les réponses ici utiles: http://stackoverflow.com/questions/208381/whats-the-difference-between-anonymous-methods-c-2-0-and-lambda-expressions –