作者: 
kisha024 (4545454554)   
2015-08-10 23:05:05各位好 如果有一小段java程式 如下
    class A{}
    class B extends A{}
    class C extends B{}
    class P{
        int m(B x) {return 1;}    }
    class Q extends P{
        int m(A x) {return 2;}    }
    class R extends Q{
        int m(C x) {return 3;}    }
    class S extends R{
        int m(B x) {return 4;}
        int m(C x) {return 5;}    }
        R s = new S();
        System.out.println(s.m(new B()));  // 4
我把它轉換成C#  如下
    public class A { }
    public class B : A { }
    public class C : B { }
    public class P {
        public virtual int m(B x) { return 1; }
    }
    public class Q : P {
        public virtual int m(A x) { return 2; }
    }
    public class R : Q{
        public virtual int m(C x) { return 3; }
    }
    public class S : R{
        public override int m(B x) { return 4; }
        public override int m(C x) { return 5; }
    }
        R s = new S();
        Response.Write(s.m(new B()) );  // 2
很明顯輸出不一樣 java輸出是4  C#輸出是2
想請問是我語法轉換上錯誤? 還是有些語法並不能100%轉換過去?
謝謝