各位好 如果有一小段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%转换过去?
谢谢