Сигнатуры методов в классах, которые расширяют универсальный класс - PullRequest
0 голосов
/ 30 сентября 2010

Если у меня есть общий класс, подобный этому:

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 Ответ

1 голос
/ 30 сентября 2010

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

...