Il pourrait aider à examiner la définition de cette méthode en C#, de l'article MSDN vous vous référez:
public static IEnumerable<TResult> Select<TSource, TResult>(
this IEnumerable<TSource> source,
Func<TSource, TResult> selector
)
Les équerres <
>
désignent les paramètres de type pour cette méthode générique, et nous pouvons Commencer à explorer le but de la méthode simplement en regardant ce que les paramètres de type font.
Nous commençons par regarder le nom de la méthode générique:
Select<TSource, TResult>
Cela nous dit que la méthode appelée Select
traite de deux types différents:
- Le Type
TSource
; et
- Le type
TResult
Examinons les paramètres:
- Le premier paramètre est
IEnumerable<TSource> source
- une source, fournissant une énumération TSource
.
- Le deuxième paramètre est
Func<TSource, TResult> selector
- une fonction de sélection qui prend un TSource
et le transforme en TResult
. (Cela peut être vérifié en examinant la définition de Func
)
Ensuite, nous regardons sa valeur de retour:
IEnumerable<TResult>
Nous savons maintenant cette méthode renvoie une énumération TResult
.
Pour résumer, nous avons une fonction qui prend une énumération de TSource
, et une fonction de sélection qui prend TSource
particu liers et retourne TResult
articles, puis l'ensemble retourne la fonction de sélection d'une énumération des TResult
.
Un exemple:
Pour mettre cela en termes concrets, permet de dire que TSource
est de type Person
(une classe représentant une personne, avec un nom, l'âge, le sexe, etc.), et TResult
est de tapez String
(représentant le nom de la personne). Nous allons donner à la fonction Select
une liste de Person
s, et une fonction qui, étant donné un Person
sélectionnera simplement leur nom. Comme la sortie de l'appel de cette fonction Select
, nous obtiendrons une liste de String
s contenant uniquement les noms des personnes.
dehors:
La dernière pièce du puzzle à partir de la signature de la méthode originale, en haut, est le mot-clé this
avant le premier paramètre. Cela fait partie de la syntaxe pour définir Extension Methods, et tout ce que cela signifie essentiellement est qu'au lieu d'appeler la méthode statique Select (passant dans votre énumération source, et la fonction de sélection) vous pouvez simplement appeler la méthode Select directement sur votre énumération, comme si il avait une méthode Select
(et passe en un seul paramètre - la fonction de sélection).
J'espère que cela le rend plus clair pour vous?
Merci pour cette réponse détaillée. Est-ce que le mot-clé "Méthode" indique simplement Enumerable.Select est une méthode? Je suppose que je me demande comment déchiffrer une ligne d'aide comme celle-ci? –
Oui, c'est vrai. Le titre de la rubrique MSDN vous indique le nom du membre, le type (méthode, propriété, événement, champ) et, pour les méthodes surchargées, la signature de la surcharge que vous examinez. (Dans le cas de Enumerable.Select, il y a deux surcharges, qui se distinguent par leurs types de fonctions de mapping.) – itowlson