2010-09-30 29 views
0

Si j'ai une classe générique comme ceci:signatures de méthode dans les classes qui étendent une classe générique

public class Repository<T> 
{ 
    public string Greeting(T t) 
    { 
    return "Hi, I'm " + t.ToString(); 
    } 
} 

qui se prolonge comme ceci:

public class FooRepository : Repository<Foo> 

Si FooRepository a une méthode appelée Greeting(Foo foo), ne cette méthode a la même signature que la méthode de la classe de base (c.-à-d. la cacher ou la remplacer), ou est-elle considérée comme distincte?

Je suis un peu confus pour être honnête.

+1

Avez-vous testé? A-t-il compilé? Y avait-il des erreurs? – Oded

+0

J'étais confus au sujet de ce que Visual Studio faisait, donc je voulais établir quelle était la théorie. – David

Répondre

1

Il cache la méthode de base et le compilateur vous avertira à ce sujet. Si vous souhaitez le remplacer, vous devez le marquer comme virtual dans la classe de base ou utiliser le mot-clé new dans la méthode de la classe dérivée pour indiquer au compilateur que vous savez ce que vous faites et que le masquage est intentionnel.

+0

Merci pour la clarification. – David