Если у меня есть два класса, которые оба реализуют интерфейс, но также и наследуются, нужно ли мне делать функцию виртуальной? например, дано:
interface IDoSomething
{
void DoSomething();
}
class A : IDoSomething
{
public void DoSomething()
{
//do A
}
}
class B : A
{
public new void DoSomething()
{
//do B
}
}
Будет ли следующий код выполнять A или B?
IDoSomething doer = new B();
doer.DoSomething(); //do A or do B?
Я запутался, потому что у меня сложилось впечатление, что все интерфейсные вызовы фактически виртуальны, но очевидно, что я использую новый оператор, чтобы скрыть базовое определение.