如何在c#中重新定义函数而不重新定义?

时间:2013-04-25 06:16:49

标签: c# oop

我有一个要求,我有一个类和一个函数

   public  class BaseClass
        {
            public virtual int MyMethod(int n)
            {
                Console.WriteLine("BaseClass=" + n + "+" + 2);
                return n + 2;
            }
        }

和派生类b 我在哪里扩展基类函数

 public class A : BaseClass
        {
            public override int MyMethod(int n)
            {
                Console.WriteLine("Class A=" + n+"*"+2);
                return n*2;
            }
        }

在我调用函数A.MyMethod()时的派生类中  应该执行基函数,然后执行派生类函数。

static void Main(string[] args)
        {

            A classA = new A();
            A.MyMethod(1);

            Console.ReadKey();
        }

有可能吗?

2 个答案:

答案 0 :(得分:0)

你的意思是你想从派生的构造函数中调用基础构造函数?是的,您可以使用base()构造。

public Derived(int sides)
    : base(sides)

当Square()实际上不是构造函数(它在你的问题中,没有返回类型或void)而是一个方法时,你可以这样做:

public override returntype Foo(...)
{
    // your adaptation
    base.Foo(...)

基类中的方法必须是虚拟的,才能使其正常工作。

答案 1 :(得分:0)

class b: a
{   
    public new int Square(int n)
    {
      var baseResult = base.Square(n);
      var i = 0//extenting the code
      return i;
    }
}