C # Méthodes d'extension

C # Méthodes d'extension
Le concept de méthode d'extension est utilisé pour insérer de nouvelles méthodes dans la classe déjà présentes dans le programme. Ou il peut nous permettre d'ajouter des fonctionnalités d'extension sans modifier le code source du type d'origine. Cela empêche l'utilisation de l'héritage et rend le code compliqué. Comment ces méthodes peuvent-elles être accessibles si les méthodes d'extension sont présentes dans la nouvelle classe?

La réponse à cette requête réside dans l'utilisation d'un paramètre de liaison. Ceux-ci sont utilisés pour lier la classe avec les fonctions nouvellement créées. Il s'agit d'une variable vide qui ne contient aucune valeur; il agit juste comme un simple mot-clé. Il est toujours déclaré en premier lieu dans la liste des paramètres. S'il est écrit autrement que dans la place initiale, le compilateur pertinent donnera une erreur. Le mot-clé utilisé à des fins de liaison est «ceci».

# Cet échantillon s;

Toutes les méthodes d'extension sont toujours déclarées statiques, mais une fois la liaison se produisant avec la classe, ces fonctions deviennent non statiques.

Exemple 1

Considérez un programme simple C Sharp dans lequel trois fonctions sont définies. Toutes ces fonctions contiennent une console simple.Énoncé écrit pour afficher le message sur les écrans. Ces méthodes sont les fonctions régulières comme les programmes simples ont.

# Public void m1 ()

Maintenant, nous voulons ajouter des extensions à ce programme existant. Les extensions jouent un rôle important dans l'ajout de nouvelles fonctions en classe sans utiliser l'héritage. De plus, nous pouvons simplement ajouter une nouvelle classe sans modifier la précédente. Nous ajouterons deux méthodes d'extension à l'échantillon de classe. Les nouvelles fonctions seront déclarées dans une nouvelle classe statique et feront partie de la classe d'échantillons existante. Ce processus est connu sous le nom de liaison. Donc une nouvelle classe statique est créée. Cette classe n'a aucun lien avec la classe existante, car elle n'est pas héritée de la classe abstraite ou de la classe déjà existante.

À l'intérieur de la classe, nous déclarons deux nouvelles fonctions statiques. Ces fonctions ont les mêmes déclarations à afficher. Alors que la déclaration des fonctions statiques, dans le paramètre, nous utilisons le mot-clé «ceci» avec l'objet de la classe d'échantillons. Un «this» est un paramètre de liaison; il ne contient aucune valeur mais n'est utilisé que pour lier les méthodes statiques nouvellement créées avec celle existante dans la classe déjà définie. Comme nous voulons lier les méthodes avec l'échantillon de classe, la classe et l'objet sont utilisés dans les arguments à des fins contraignantes.

# Public static void M4 (cet échantillon s)

De même, la deuxième fonction prendra également ce mot-clé et l'objet de la classe. Dans la liste des paramètres, nous déclarons toujours les paramètres de liaison au début.

Cette fonction affichera une déclaration qui lui est transmise via le programme principal. Une classe pour le programme principal est déclarée. À l'intérieur du programme principal, nous créerons un objet pour la classe d'échantillons, car nous avons lié les nouvelles méthodes à l'échantillon de classe, de sorte que toutes ces méthodes seront accessibles via l'objet de l'échantillon de classe. Il n'est pas nécessaire de créer un objet pour la nouvelle classe.

# Échantillon s = nouveau échantillon ();

L'objet de la classe est indiqué dynamiquement. Cet objet appellera toutes les fonctions des deux classes définies séparément.

# S.M1 ();

Nous exécuterons le code source ci-dessus dans le terminal Ubuntu. À cette fin, un compilateur sera nécessaire, nous utilisons donc les MC, et nous utiliserons mono pour exécuter le fichier avec l'extension de .exe.

Fichier $ MCS.CS
$ mono fichier.exe

Exemple 2

Dans cet exemple, une fonction booléenne est créée pour comparer deux valeurs et renvoyer si la première valeur est supérieure à la première. Cette comparaison est faite dans la classe d'extension déclarée dans une méthode d'extension. Après avoir déclaré les bibliothèques, nous avons directement utilisé une seule classe dans laquelle une méthode étendue est déclarée.

À l'intérieur de la classe, nous avons pris une fonction de type bool. Ce booléen renverra une seule valeur, «vrai» ou «faux» à la fois. Si la première valeur est supérieure à la «vraie» sera envoyée; Sinon, la réponse sera fausse. Ce paramètre contient le paramètre «ce» pour lier la fonction étendue avec les variables que nous lui avons envoyées à partir du programme principal. Tandis que deux variables du type de données entières sont également déclarées ici pour stocker les valeurs. La comparaison entre ces deux nombres entiers sera effectuée, et la valeur sera retournée.

À l'intérieur du programme principal, une variable de type entier est prise et attribuée une valeur.

# Bool z = stri.MyExtensionMethod (200);

Une variable de type bool sera déclarée ici pour accepter la valeur renvoyée de la fonction dans un appel de fonction. L'objet stri est utilisé pour appeler la fonction. Cela prendra une valeur dans le paramètre. La deuxième valeur y est envoyée via l'objet lors de l'appel de la fonction.

Enregistrez le code et exécutez-le; Vous verrez que la première valeur était plus petite que la seconde, c'est pourquoi la réponse est fausse.

Exemple 3

Dans cet exemple de C Sharp, nous avons utilisé une méthode de chaîne intégrée pour calculer la longueur de la chaîne d'entrée transmise vers la fonction du programme principal. Une classe statique est créée. Le mot-clé statique montre qu'une autre classe ne peut pas l'hériter. À l'intérieur de cette classe statique, une méthode statique est déclarée. Cette méthode trouvera la longueur totale de la chaîne. Ainsi, le paramètre de méthode contiendra une variable de type de chaîne pour accepter la chaîne d'entrée.

La méthode de longueur est accessible via l'objet de la chaîne. Déclarez maintenant la fonction principale. Attribuer une valeur de chaîne au type de données de chaîne.

# Int z = stri.ExtensionMethodName ();

Cet appel de fonction reprendra la longueur et le stockera dans la variable de type entier. Cette longueur sera affichée via cette variable plus tard à l'aide de la méthode WriteLine ().

Compilez le code et exécutez-le. Vous verrez qu'une chaîne de 10 caractères a été utilisée dans le programme.

Conclusion

Une méthode d'extension en C Sharp est utilisée pour ajouter des fonctionnalités supplémentaires au programme sans modifier le code existant une fois écrit. Cela peut être fait en utilisant une classe supplémentaire avec des méthodes étendues. Cependant, ces méthodes font partie d'une autre classe mais peuvent être liées et accessibles à partir de l'objet de la classe déjà créée. Nous avons utilisé quelques exemples de base qui ont expliqué la création et le fonctionnement des méthodes étendues. Le mot-clé «ce» joue un rôle important dans les méthodes d'extension de liaison avec la classe. Nous utilisons ce mot-clé dans le paramètre de la fonction étendue.