Почему VS автоматически добавляет вызов в виртуальный метод базового класса? - PullRequest
0 голосов
/ 08 апреля 2011

Имея такой код:

class X
{
    public virtual void Test()
    {
    }
}

class Y : X
{
    public override void Test()
    {
        base.Test()   //added automatically, why?
    }
}

Ответы [ 2 ]

4 голосов
/ 08 апреля 2011

Потому что, косвенно, это ничего не сломает.

3 голосов
/ 08 апреля 2011

Поскольку в большинстве случаев имеет смысл или даже требуется вызывать реализацию базового класса, например, виртуальные Dispose методы (базовый класс должен быть утилизирован) или виртуальные OnXXX методы в WinForms (базовый класс обычно запускает событие из их OnXXX методов).

Конечно, если виртуальный метод принадлежит вам, и вы не хотите такого поведения, я согласен, что это довольно раздражает;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...