J’ai vu du code qui utilise le mot this
clé this
dans la déclaration des parameters de la fonction. Par exemple:
public static Object SomeMethod( this Object blah, bool blahblah)
Qu’est-ce que le mot this
signifie dans ce contexte?
Cela signifie que SomeMethod()
est une méthode d’extension de la classe Object
.
Après l’avoir définie, vous pouvez appeler cette méthode sur toutes les instances d’ Object
(même si elle est déclarée static
), comme suit:
object o = new Object(); bool someBool = true; // Some other code... object p = o.SomeMethod(someBool);
Le paramètre this Object
fait référence à l’object sur lequel vous l’avez appelé et ne figure pas réellement dans la liste de parameters.
La raison pour laquelle elle est déclarée static
alors que vous l’appelez comme une méthode d’instance est que le compilateur traduit cela en un véritable appel statique dans l’IL. Cela va au fond, donc je ne vais pas élaborer, mais cela signifie aussi que vous pouvez l’appeler comme s’il s’agissait d’une méthode statique:
object o = new Object(); bool someBool = true; // ... object p = ObjectExtensions.SomeMethod(o, someBool);
C’est comment vous déclarez une méthode d’extension .
Cela signifie que vous pouvez appeler SomeMethod avec .SomeMethod
pour n’importe quel object. L’object avant le .
sera le paramètre bla
ssortingng s = "sdfsd"; Object result = s.SomeMethod(false);
La méthode d’extension sera disponible sur tous les types hérités du type de this
paramètre, dans ce cas, l’object. Si vous avez SomeMethod(this IEnumerable
il sera disponible sur tous les IEnumerable
: comme List
.
Méthode d’extension: