Dupliqué possible: strong>
"Nouveau" mot-clé dans la déclaration de propriété p>Pardonnez-moi si c'est c # 101, mais j'essaie de comprendre le code ci-dessous: p>
xxx pré> Pourquoi l'indexeur a-t-il
neuf code> devant celui-ci? À propos, lapin est une classe définie dans un autre fichier. Merci! P> blockQuote>
4 Réponses :
Essayez de supprimer de nouveau du code et vous devriez obtenir un avertissement: p>
rabbitcollection.Cette [int] ' Membre hérité de cache fort> 'System.Collections.ArrayList.Ce [int]' '. pour faire le membre actuel Remplacez cette implémentation, ajoutez le mot-clé de remplacement. Sinon ajouter le nouveau mot-clé. strong> p> blockQuote>
Vous voudrez peut-être voir Nouveau modificateur C # P>
Le nouveau mot clé cache explicitement un membre hérité d'une classe de base forte>. Lorsque vous masquez un membre hérité, la version dérivée du membre remplace la version de la classe de base. Bien que vous puissiez masquer des membres sans L'utilisation du nouveau modificateur, le résultat est un avertissement. Si vous utilisez de nouveaux Pour masquer explicitement un membre, il supprime cet avertissement et ces documents le fait que la version dérivée est destinée à remplacer. p> blockQuote>
Wow, réponse rapide de vous tous les gars! C'est une excellente information. Merci!
Parce que la classe de base ( Cela fonctionne également sans le Bien sûr, dans le code écrit à tout moment au cours des sept ou huit dernières années, vous devez utiliser ArrayList code>) a également un indexeur. Le
nouveau code> dit "Je remplace délibérément le membre de la classe de base avec l'une des miennes." P>
nouveau code>, mais le
nouveau code> indique au compilateur que vous savez ce que vous faites. P>
Liste
ArrayList code>, et puis vous ne le faites pas besoin de faire un descendant avec son propre indexeur de dactylographié fort. p>
Merci! c'est bien
En effet, cette classe cache un membre de la classe de base (arraylist définit également le même indexeur). P>
Nouveau raconte le compilateur que ce comportement est destiné et non par erreur. P>
Merci! Pour le guide du pointeur au polymorphisme
Habituellement, si un baseType entend une méthode à remplacer, il serait marqué comme virtuel. Dans ce cas, le sous-type marque simplement la méthode avec le remplacement. P>
Si le BaseType ne le fait pas et que le sous-type définit une méthode identique, il y a une ambiguïté. Le C # Compiler vous demande de confirmer que vous le souhaitez en marquant la méthode du sous-type avec un dant nouveau - En effet, je suis conscient et je souhaite masquer la méthode offerte par le type de base ' P>
J'utiliserais une coulée de style C au lieu de la mouffette en toute sécurité. Maintenant, jetez-le et utilisez une liste code>.