如果是隐藏(new),返回值类型是可以不一样的
如下,基类的 F 返回的是 string,派生类的 F 返回的是 int,这是允许的,能够正常调用、运转。
public class B { public string F() { return "itpow"; } } public class D : B { public new int F() { return 0; } }
如果是重写(virtual 与 override),返回值类型是必须一样的
如下,会出错,编译都通不过。
public class B { public virtual string F() { return "itpow"; } } public class D : B { public override int F() { return 0; } }
如果是抽象(abstract),返回值类型是必须一样的
因为 abstract 也隐含了 virtual 的意思。
顺道说一下重载,重载返回值类型是可以不一样的
总结
可同时使用的情况,返回值类型可以不一样。
比如隐藏、重载,同样场景下,A,B 方法可以同时使用。