60 votes

Quelle est l'utilisation de « remplacer abstrait » en C# ?

Juste par curiosité, j'ai essayé de remplacer une méthode abstraite dans la classe de base et de méthode l'abstraction d'implémentation. Comme ci-dessous :

 public abstract class FirstAbstract
{
    public abstract void SomeMethod();
}

public abstract class SecondAbstract : FirstAbstract
{
    public abstract override void SomeMethod();
    //?? what sense does this make? no implementaion would anyway force the derived classes to implement abstract method?
}

Curieux de savoir pourquoi le compilateur C# permet d'écrire un " remplacement abstrait ". N'est-ce pas redondant ? Cela devrait être une erreur de compilation pour faire quelque chose comme ça. Est-ce que cela sert à certains cas d'utilisation?

Merci de votre intérêt.

16voto

Eric Lippert Points 300275

Chose intéressante, la version Roslyn du compilateur C# contient une méthode de substitution abstraite, que j'ai trouvée assez étrange pour écrire un article sur :

http://ericlippert.com/2011/02/07/strange-but-legal/

0voto

Amar Palsapure Points 7025

Ceci est fait car dans la classe enfant, vous ne pouvez pas avoir la abstract avec le même nom que dans la classe de base. override indique au compilateur que vous remplacez le comportement de la classe de base.

J'espère que c'est ce que vous cherchez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X