Paramètres de rejet de lambda
Remarque
Cet article est une spécification de fonctionnalité. La spécification sert de document de conception pour la fonctionnalité. Il inclut les modifications de spécification proposées, ainsi que les informations nécessaires pendant la conception et le développement de la fonctionnalité. Ces articles sont publiés jusqu’à ce que les modifications de spécification proposées soient finalisées et incorporées dans la spécification ECMA actuelle.
Il peut y avoir des différences entre la spécification de la fonctionnalité et l’implémentation terminée. Ces différences sont consignées dans les notes pertinentes de la réunion de conception linguistique (LDM).
Vous pouvez en savoir plus sur le processus d’adoption des speclets de fonctionnalités dans la norme de langage C# dans l’article sur les spécifications .
Résumé
Autoriser l'utilisation des rejets (_
) comme paramètres des lambdas et des méthodes anonymes.
Par exemple:
- lambdas :
(_, _) => 0
,(int _, int _) => 0
- méthodes anonymes :
delegate(int _, int _) { return 0; }
Motivation
Les paramètres inutilisés n’ont pas besoin d’être nommés. L'intention des rejets est claire, c'est-à-dire qu'ils sont inutilisés/jetés.
Conception détaillée
Paramètres de méthode - §15.6.2 Dans la liste des paramètres d’une méthode lambda ou anonyme avec plusieurs paramètres nommés _
, ces paramètres sont ignorés.
Remarque : si un paramètre unique est nommé _
il s’agit d’un paramètre normal pour des raisons de compatibilité descendante.
Les paramètres des rejets n'introduisent aucun nom dans les champs d'application.
Notez que cela implique qu'ils ne cachent aucun nom _
(souligné).
Noms simples (§12.8.4) Si K
est égal à zéro et que le simple_name apparaît dans un bloc et si le bloc 's (ou un bloc englobant 's) espace de déclaration de variable locale (Déclarations - §7.3) contient une variable locale, paramètre (à l’exception des paramètres d’abandon) ou constante portant le nom I
, puis le simple_name fait référence à cette variable locale, paramètre ou constante et est classé comme variable ou valeur.
Scopes - §7.7 A l'exception des paramètres de rejet, la portée d'un paramètre déclaré dans une expression lambda (§12.19) est le anonymous_function_body de cette expression lambda A l'exception des paramètres de rejet, la portée d'un paramètre déclaré dans une expression anonymous_method_expression (§12.19) est le block de cette expression anonymous_method_expression.
Sections relatives aux spécifications
- Paramètres correspondants - §12.6.2.2
C# feature specifications