首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#的重写有关问题

2012-01-10 
C#的重写问题? classA{publicvirtualvoidfun1(inti){Response.Write(i)}publicvoidfun2(Aa){a.fun1(1)fu

C#的重写问题?

class   A  
{
public   virtual   void   fun1(int   i)
{
Response.Write(i);
}

public   void   fun2(A   a)
{
a.fun1(1);
fun1(5)
}
}
class   B:A
{
public   override   void   fun1(int   i)
{
base.fun1(i+1);
}

public   void   main()
{
A   a   =   new   A();
B   b   =   new   B();
a.fun2(b);
b.fun2(a);
}
}
以上这个程序会输出什么呢?

[解决办法]
2
5
1
6
其实只要明白这整个过程的顺序就行了

a.fun2(b);
---------
首先调用A类中的fun2方法,但是发现执行的是参数a中的方法,也就是B类中的fun1()方法,紧接着执行fun1(5),也就是this.fun1(5)。

b.fun2(a);
=========
这句话的分析顺序如上

热点排行