在 C++ 中,它是通过“使用”完成的,而在 C# 中呢?
public class foo
{
public void print(string s) {...}
}
public class bar : foo
{
// shadowing
public void print(object o) {...}
}
如何提升foo.print,所以foo.print和bar.print编译器的“级别”相同(bar当然)?
更新 1
最初我添加了一段关于阴影和覆盖之间常见混淆的段落,但后来我删除了它,因为我认为它会冒犯读者。
阴影就像跨越继承树的重载。阴影不是压倒一切的。
更新 2
foo.print解决重载方法时不再考虑后阴影print。提升foo.print会让它重新进入流程——所以当我调用bar_object.print("hello")该方法时,它foo.print会被调用。