Mot clé "surcharges" dans VB.NET
Avez-vous vraiment besoin de ce mot-clé pour la surcharge de méthodes? Quelle est la différence entre l'utilisation de l'surcharges mot-clé ou juste avoir différentes signatures de méthode?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Dans la même catégorie, le
Overloads
mot clé est facultatif, mais si une méthode est déclaréeOverloads
ouOverrides
vous devez l'utiliser pour tous les surcharges de la méthode.Cela devient plus compliqué lorsque vous êtes à la surcharge de méthodes de classe de base dans une classe dérivée.
Si une classe de base a plusieurs méthodes surchargées, et vous voulez ajouter une surcharge de la méthode dans une classe dérivée, alors vous devez marquer la méthode dans la classe dérivée avec la
Overloads
mot-clé, sinon, toutes les méthodes surchargées dans la classe de base ne sont pas disponibles dans la classe dérivée.Voir MSDN pour plus de détails.
Cela montre bien haut dans les résultats de Google, et je pense que ça pourrait être expliqué plus clairement ici.
Il n'y a aucune raison d'utiliser la
Overloads
mot-clé lorsque vous êtes à la surcharge de diverses méthodes à l'intérieur de la même classe. La raison principale que vous pouvez utiliserOverloads
est de permettre à une classe dérivée pour appeler une méthode de sa classe de base qui a le même nom que la méthode surchargée, mais une signature différente.Supposons que vous avez deux classes,
Foo
etSonOfFoo
oùSonOfFoo
hérite deFoo
. SiFoo
implémente une méthode appeléeDoSomething
etSonOfFoo
implémente la méthode avec le même nom, leSonOfFoo
méthode permet de masquer les parents d'implémentation de la classe...même si les deux méthodes utilisent des paramètres différents. La spécification de laOverloads
mot-clé va permettre à la classe dérivée appeler le parent de la classe des surcharges de la méthode.Voici un code pour le démontrer, avec les classes
Foo
etSonOfFoo
mis en œuvre comme décrit, et l'autre paire de classes,Bar
etSonOfBar
qui utilisent leOverloads
mot-clé:Voici quelques informations sur la façon dont cette compile de manière différente dans les CLI.
Il a été un facteur de conception. Bien sûr, il (VB) pourrait avoir été conçu pour en déduire la surcharge par la signature de la fonction (comme en C#) - les Surcharges mot-clé lui-même pourrait avoir été omis, mais à la fin c'est juste dans la lignée de Visual Basic à l'expressivité (que certains considèrent comme les frais généraux) et c'est seulement une langue décision de conception.
Miky D est la droite. Il n'y a pas de différence entre une méthode surchargée déclaré Surcharges et une autre qui ne l'est pas.
Je voulais juste faire remarquer que les Surcharges mot-clé est obligatoire lorsqu'une autre méthode avec le même nom est déclarée des Remplacements ou des Surcharges. Par exemple, si vous substituez la méthode Equals comme ceci:
Alors vous voulez créer une surcharge comme ceci:
Vous obtiendrez l'erreur suivante:
Vous obtiendrez la même erreur si quelqu'un a déclaré une méthode que les Surcharges, et que vous voulez la surcharge de cette méthode. Vous n'aurez qu'à ajouter les Surcharges de mot-clé pour votre méthode ou le supprimer de l'autre méthode.
J'ai personnellement jamais déclarer une méthode surchargée Surcharges, à moins que je n'ai pas le choix, comme dans la situation ci-dessus.
J'ai couru dans une situation où j'ai été nécessaires pour utiliser les Surcharges mot-clé.
J'ai eu un parent de la classe, et une classe héritée.
Dans cet exemple, j'ai dû utiliser les surcharges mot-clé.
La
Overloads
mot-Clé est totalement facultatif - je ne vois pas les avantages de l'utilisation de cela.