我有以下代码:
class Visitor
{
internal virtual void Visit(Node n) { }
}
class VisitorSpecial : Visitor
{
internal new void Visit(Node n) { }
}
class Base
{
internal virtual void Accept(Visitor v) { }
internal virtual void Accept(VisitorSpecial v) { }
}
class Node : Base
{
internal override void Accept(Visitor v){ v.Visit(this); }
internal override void Accept(VisitorSpecial v){ v.Visit(this); }
}
调用时是否有任何理由
Accept(Visitor v)
选择该方法
new Node().Accept(new VisitorSpecial())
更新:好的,我的错,我意识到我在访问者中使用“新”而不是覆盖。现在我知道为什么“新突破多态性”了。这使我的问题完全愚蠢。谢谢您的帮助。