2010-09-30 2 views
0

Если у меня есть общий класс, как это:Метод подписи в классах, которые расширяют общий класс

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

, которая вытянута, как это:

public class FooRepository : Repository<Foo> 

Если FooRepository имеет метод Greeting(Foo foo), делает этот метод имеет ту же подпись, что и метод базового класса (т. е. скрывает или переопределяет его) или считается отдельным?

Я немного смущен, если честно.

+1

Вы протестировали его? Составил ли он? Были ли ошибки? – Oded

+0

Я был смущен тем, что делал Visual Studio, поэтому я хотел установить, что такое теория. – David

ответ

1

Он скрывает базовый метод, и компилятор предупредит вас об этом. Если вы хотите переопределить его, вы должны пометить его как virtual в базовом классе или использовать ключевое слово new в методе производного класса, чтобы указать компилятору, что вы знаете, что вы делаете, и скрытие намеренно.

+0

Спасибо за разъяснение. – David