“MyBase” et “MyClass” Utilisation dans VB.NET
Dans quels scénarios serait d'utiliser la MyBase
et MyClass
mots-clés dans VB.NET?
OriginalL'auteur Nehil Verma | 2010-05-17
Vous devez vous connecter pour publier un commentaire.
Dans quels scénarios serait d'utiliser la MyBase
et MyClass
mots-clés dans VB.NET?
OriginalL'auteur Nehil Verma | 2010-05-17
Vous devez vous connecter pour publier un commentaire.
MyBase
est utilisé lorsqu'une fonction virtuelle doit appeler sa version du parent. Par exemple, pensez à:(C'est le même que
base
en C#.)MyClass
est rarement utilisé. Il appelle la propre de la classe de la méthode, même si elle aurait l'habitude de les appeler le classe dérivée de méthode virtuelle. En d'autres termes, il ne débande la méthode virtuelle d'expédition et de la place fait un appel statique.C'est un exemple artificiel. Je suis mal à trouver un usage du monde réel maintenant (bien que certainement il existe):
(Ce qui n'existe pas en C#. Dans l'ILLINOIS, cet un
call
au lieu de l'habituelcallvirt
opcode.)OriginalL'auteur
Les deux sont utilisés lorsque vous avez besoin d'appeler une méthode virtuelle et vous avez besoin de préciser laquelle.
MyBase
va appeler la méthode dans la classe de base,MyClass
va appeler la méthode dans la classe en cours.Je ne pense pas que j'ai utilisé
MyClass
plus d'une fois ou deux fois, maisMyBase
j'ai utilisé un peu quand je remplace une méthode, mais vous voulez le code dans la méthode substituée à être exécuté en tant que bien.MyBase
:http://msdn.microsoft.com/en-us/library/dzfhkk01%28VS.71%29.aspx
MyClass
:http://msdn.microsoft.com/en-us/library/b3b35kyk%28VS.71%29.aspx
OriginalL'auteur
mybase
se réfère à la base de la classe de l'instance courante.myclass
fait référence à l'instance en cours, mais ne tient pas compte substituée la mise en œuvre de l'propriétés/méthodes de la classe.En un mot l'ensemble de l'utilisation des deux est pour Le polymorphisme. Voici une belle l'article qui explique les mots clés un peu plus loin.
OriginalL'auteur
Concernant l'utilisation de Maclasse, il y a une très mineur amélioration de la vitesse à avoir si vous utilisez
MyClass
à l'intérieur d'une classe de feuilles (NotInheritable classe). Plus précisément, s'il existe une méthode qui existe dans une classe parente, et n'est pas remplacée OU existe une substitution dans la classe de feuilles, puis à l'aideMyClass
au lieu deMe
provoque unecall
opcode pour être utilisé à la place decallvirt
.MyBase
, qui émet également lecall
opcode, n'est pas applicable dans ce cas où vous souhaitez que la méthode puisse être invoquée, que si elle est mise en œuvre/substituée dans la feuille ou n'existant que dans le parent. I. e., vous êtes le maintien d'une forme de style de la cohérence entre un grand nombre d'objets semblables.Et quand je dis "amélioration de la vitesse", je parle d'un nombre dérisoire de ~5 ms 100 000 s'exécute sur un bas de gamme, serveur de développement exécute en mode 32 bits, sur une chaîne d'analyse de la fonction. Ou pour dire les choses d'une autre manière, plus la vitesse de la machine, plus cette différence est en passe de l'être. Mais, je voulais mettre ça là.
OriginalL'auteur
Ces mots clés sont utilisés dans les scénarios impliquant l'Héritage. MyBase, MyClass sont souvent utilisés pour se référer à certaines fonctionnalités ou des biens dans la classe parent. Si vous avez une classe qui dérive de l'autre, ces mots-clés sont utilisés pour faire référence à du code dans le contexte de la classe parent.
OriginalL'auteur