Вызов метода базового класса

#c# #oop

#c# #ооп

Вопрос:

На c я бы сделал

 class A
{
public:
    virtual void stuff()
    {
        //something
    }
};

class B : public A
public:
    virtual void stuff()
    {
        //something2
        A::stuff() //something
    }
};
  

Как бы я это сделал на C #?
Я пытался

 public void stuff()
{
    //something2
    A.stuff(); //something
}
  

но это не работает

Ответ №1:

base это ключевое слово для ссылки на ваш суперкласс в C #. Использовать:

 base.stuff();
  

Комментарии:

1. Спасибо, я приму это как ответ, как только это позволит мне 🙂

2. Похоже ли это на super.stuff() в Java?

3. @pratnala: Да.

4. Был base выбран с единственной целью отличаться? Кажется, что любой другой язык с наследованием вызывает это super

5. @ArtOfWarfare: Я имею в виду, понятия не имею, но я предполагаю, что это не сильно отличается от ‘this’ против ‘self’ (Python)…

Ответ №2:

Используйте base . Нравится base.stuff();

Ответ №3:

Просто чтобы добавить к приведенному выше ответу, base.stuff() работает, если только это не конструктор, который вы пытаетесь вызвать, и в этом случае он вызывается как:

 class A
{
public:
    public A(){}

};

class B : A
{
    public B() : base()
    {

    }
};