J'ai rencontré plusieurs instances de code C # comme suit:
public static int Foo(this MyClass arg)
Je n'ai pas pu trouver d'explication sur la signification du this
mot clé dans ce cas. Des idées?
c#
parameters
this
kpozin
la source
la source
Réponses:
Il s'agit d'une méthode d'extension . Voir ici pour une explication .
cela signifie que vous pouvez appeler
plutôt que
Cela permet la construction d' interfaces fluides comme indiqué ci-dessous.
la source
Le billet de blog cité par Scott Gu l' explique bien.
Pour moi, la réponse à la question se trouve dans la déclaration suivante dans ce message:
la source
this
mot - clé dans la signature de la méthode. Les autres réponses ne disent que de façon inutile "c'est une méthode d'extension". Je n'ai jamais entièrement compris comment les méthodes d'extension "se rattachent" aux types qu'elles étendent jusqu'à la lecture de cette réponse. Je vous remercie!En plus de l'explication de Preet Sangha:
Intellisense affiche les méthodes d'extension avec une flèche bleue (par exemple devant "Aggregate <>"):
Tu as besoin d'un
pour que les méthodes d'extension apparaissent et soient disponibles, si elles se trouvent dans un espace de noms différent du code qui les utilise.
la source
Ce sont des méthodes d'extension . Bienvenue dans un tout nouveau monde fluide . :)
la source
Je viens de l'apprendre moi-même l'autre jour: le mot-clé this définit que la méthode est une extension de la classe qui la procède. Donc pour votre exemple, MyClass aura une nouvelle méthode d'extension appelée Foo (qui n'accepte aucun paramètre et retourne un entier; elle peut être utilisée comme avec n'importe quelle autre méthode publique).
la source
"this" étend la classe suivante dans la liste des paramètres
Ainsi, dans la signature de méthode ci-dessous, "this" étend "String". La ligne est passée à la fonction comme argument normal à la méthode. chaîne statique publique [] SplitCsvLine (cette ligne de chaîne)
Dans l'exemple ci-dessus, "cette" classe étend la classe "String" intégrée.
la source