读书人

俺是菜神不懂这段代码,该如何处理

发布时间: 2012-02-27 10:00:22 作者: rapoo

俺是菜神,不懂这段代码
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);
}

public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
以上代码依次输出:2,5,1,6
为什么?大虾们要说的详细点,谢!


[解决办法]
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
相当于
public void Fun2(X x)
{
x.Fun1(1);
this.Fun1(5);
}

a.Fun2(b);
就等于
b.fun1(1);
a.fun1(5);

b.Fun2(a);
就等于
a.fun1(1);
b.fun1(5);

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
[解决办法]
注意形参和实参的区别就行了

读书人网 >C#

热点推荐