2008-10-07 6 views
6

Réponses à un message récent (Toute possibilité d'imiter times() Méthode Ruby en C#?) Utilise l'opérateur => dans les exemples d'utilisation. Que fait cet opérateur? Je ne peux pas le trouver dans mon livre C#, et il est difficile de chercher des symboles comme celui-ci en ligne. (Je ne pouvais pas le trouver.)Que signifie l'opérateur C# =>?

Répondre

15

Ce n'est pas vraiment un opérateur en tant que tel, cela fait partie de la syntaxe des expressions lambda. En particulier => est le bit qui sépare les paramètres du corps de l'expression lambda.

Est-ce que votre livre couvre C# 3.0? Sinon, il n'inclura pas les expressions lambda. Si c'est le cas, il devrait vraiment les couvrir! Espérons qu'avec la bonne terminologie, vous pourrez le trouver dans la table des matières ou dans l'index.

EDIT: Un peu plus d'informations: Une expression lambda est un morceau de sucre syntaxique soit pour créer une instance d'un délégué ou un arbre d'expression (ce dernier étant nouveau pour .NET 3.5). Les expressions lambda remplacent presque entièrement les méthodes anonymes (à partir de C# 2.0) bien qu'elles ne supportent pas la notion de "je ne me soucie pas des paramètres" de la même manière que les méthodes anonymes.

+0

Ah, mon livre ne couvre pas C# 3.0, donc pas étonnant que je ne pouvais pas le trouver! –

+0

Puis-je vous demander ce que vous voulez dire par «je m'en fiche des paramètres» de la même façon que les méthodes anonymes? Merci! – xanatos

+1

@xanatos: Par exemple, pour créer un 'EventHandler' qui n'utilise pas l'expéditeur ou les arguments, vous pouvez utiliser 'delegate {Console.WriteLine (" Called "); } 'sans spécifier de liste de paramètres. C'est convertible en type de délégué * any * avec un type de retour de void et tous les paramètres "in". –

1

Ce sera pour une expression lambda:

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

Un exemple est ici:

MyControl.OnMouseDown += (sender, e) => 
{ 
    // Do something in the mouse down event 
}; 

Ici, j'ai créé un délégué d'événement d'expression lambda. Cela me sauve essentiellement d'avoir à créer une fonction séparée pour cela dans la classe.

1

Une expression lambda est une fonction anonyme qui peut contenir des expressions et des instructions et peut être utilisée pour créer des délégués ou des types d'arborescence d'expression.

Toutes les expressions lambda utilisent l'opérateur lambda =>, qui est lu comme "va à". Le côté gauche de l'opérateur lambda spécifie les paramètres d'entrée (le cas échéant) et le côté droit tient l'expression ou un bloc d'instructions

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

1

Le => jeton est appelé l'opérateur lambda.

Il est utilisé dans les expressions lambda pour séparer les variables d'entrée du côté gauche du corps lambda du côté droit.

MSDN