static void Main(string[] args)
{
B b = new B();
A a = new A();a.fun2(b);
b.fun2(a);
Console.Read();
}
public class A{
public virtual void fun1(int i){Console.WriteLine(i);
}
public void fun2(A a){
a.fun1(1);
fun1(5);
}
}
public class B:A
{
public override void fun1(int i)
{
base.fun1(i+1);
}
}