第一个程序:
public class MainClass{    public int num1 = 0;    public static int num2 = 0;     public void change(int i)    {        i = 5;        num2 = i;    }     public void change(MainClass m)    {        MainClass tmp = new MainClass();        tmp.num1 = 9;        m = tmp;    }     public void add(int i)    {        i += 10;        num2 += 10;    }        public void add(MainClass m)    {        m.num1 += 20;    }     public static void Main(string[] args)    {        MainClass m = new MainClass();        Console.WriteLine("A m1:{0} m2:{1}", m.num1, MainClass.num2);          m.change(m.num1);        Console.WriteLine("B m1:{0} m2:{1}", m.num1, MainClass.num2);         m.change(m);        Console.WriteLine("C m1:{0} m2:{1}", m.num1, MainClass.num2);         m = new MainClass();        m.add(m.num1);        Console.WriteLine("D m1:{0} m2:{1}", m.num1, MainClass.num2);                    m.add(m);        Console.WriteLine("E m1:{0} m2:{1}", m.num1, MainClass.num2);    }}第二个程序:public abstract class BaseClass{    public virtual void MethodA()    {        Console.WriteLine("BaseClass :MethodA ");    }    public abstract void MethodB();}    public class Class1 : BaseClass{    public override void MethodA()    {        Console.WriteLine("Class1:MethodA ");    }    public override void MethodB()    {        Console.WriteLine("Class1:MethodB ");    }}    public class Class2 : Class1{    public override void MethodA()    {        Console.WriteLine("Class2:MethodA ");    }     new public void MethodB()    {        Console.WriteLine("Class2:MethodB ");    }}    public class MainClass{    public static void Main(string[] args)    {        Class1 c1 = new Class1();        c1.MethodA();        c1.MethodB();        Class2 c2 = new Class2();        c2.MethodA();        c2.MethodB();         Class1 c21 = c2 as Class1;        c21.MethodA();        c21.MethodB();         BaseClass c11 = new Class1();        c11.MethodA();        c11.MethodB();        BaseClass c22 = new Class2();        c2.MethodA();        c2.MethodB();    }}是雅虎公司的面试题,请各问指教,谢谢~~

解决方案 »

  1.   

    自己拷贝到Console工程里 F5 一下
      

  2.   

    好吧, 我帮你F5了 。。 。第一个:A m1:0 m2:0
           B m1:0 m2:5
           C m1:0 m2:5
           D m1:0 m2:15
           E m1:20 m2:15第二个:Class1:MethodA
           Class1:MethodB
           Class2:MethodA
           Class2:MethodB
           Class2:MethodA
           Class1:MethodB
           Class1:MethodA
           Class1:MethodB
           Class2:MethodA
           Class2:MethodB
      

  3.   

    第一段代码比较简单:看看静态变量和动态变量的区别第二段代码主要是理解继承类 重载和new关键字隐藏父类方法。
    前两次输出和后两次输出不用说了,很容易理解
    主要是第三次输出
    建议自己看看msdn里 new 关键字 和overrid 关键字