C# 基类中的Run方法以及子类中的Run方法

C# 基类中的Run方法以及子类中的Run方法,c#,C#,我希望能够在我的基类中运行这个方法,这个基类是displayingsomething 另外,在我的子类displaysomething中运行这个方法 这可能吗?请问我怎样才能做到这一点 我有一个基类,看起来像这样 public class baseClass { public void displaySomething() { MessageBox.Show("Method from base class: display something"); } }

我希望能够在我的基类中运行这个方法,这个基类是displayingsomething 另外,在我的子类displaysomething中运行这个方法

这可能吗?请问我怎样才能做到这一点

我有一个基类,看起来像这样

public class baseClass
{
    public void displaySomething()
    {
        MessageBox.Show("Method from base class: display something");
    }
}
public class subClass : baseClass
{

    public void displaySomething()
    {
        MessageBox.Show("Additional method to run after base class method");
    }

}
我有一个子类,看起来像这样

public class baseClass
{
    public void displaySomething()
    {
        MessageBox.Show("Method from base class: display something");
    }
}
public class subClass : baseClass
{

    public void displaySomething()
    {
        MessageBox.Show("Additional method to run after base class method");
    }

}
我有一个按钮点击事件,看起来像这样

private void button1_Click(object sender, EventArgs e)
{     
    subClass mySubClass = new subClass();
    mySubClass.displaySomething();
}

您需要在子类的重写方法的实现中添加基类的重写方法的调用,如下所示:

public void displaySomething() {
    // You can decide to call the base before, after,
    // or in the middle of your new method.
    base.displaySomething();
    MessageBox.Show("Additional method to run after running base class method");
}
public class baseClass {
    public virtual void displaySomething() ...
}
public class subClass : baseClass {
    public override void displaySomething() ...
}
请注意,您的代码不会重写该方法,因为它不是声明为虚拟的。您需要这样声明:

public void displaySomething() {
    // You can decide to call the base before, after,
    // or in the middle of your new method.
    base.displaySomething();
    MessageBox.Show("Additional method to run after running base class method");
}
public class baseClass {
    public virtual void displaySomething() ...
}
public class subClass : baseClass {
    public override void displaySomething() ...
}

您需要在子类的重写方法的实现中添加基类的重写方法的调用,如下所示:

public void displaySomething() {
    // You can decide to call the base before, after,
    // or in the middle of your new method.
    base.displaySomething();
    MessageBox.Show("Additional method to run after running base class method");
}
public class baseClass {
    public virtual void displaySomething() ...
}
public class subClass : baseClass {
    public override void displaySomething() ...
}
请注意,您的代码不会重写该方法,因为它不是声明为虚拟的。您需要这样声明:

public void displaySomething() {
    // You can decide to call the base before, after,
    // or in the middle of your new method.
    base.displaySomething();
    MessageBox.Show("Additional method to run after running base class method");
}
public class baseClass {
    public virtual void displaySomething() ...
}
public class subClass : baseClass {
    public override void displaySomething() ...
}

请注意,它不能由调用方完成-子类决定是否调用基类方法。请注意,它不能由调用方完成-子类决定是否调用基类方法。非常感谢。因此,我必须添加Virtual and override?@user2320476,如果你想拥有多态行为,这几乎是在子类中拥有具有相同签名的方法的普遍目的,那么答案是肯定的。非常感谢。因此,我必须添加Virtual和override?@user2320476,如果您想拥有多态行为,这几乎是在具有相同签名的子类中拥有方法的普遍目的,那么答案是肯定的。