<分区>
在不运行这段代码的情况下,确定将调用哪个 Foo
方法:
class A
{
public void Foo( int n )
{
Console.WriteLine( "A::Foo" );
}
}
class B : A
{
/* note that A::Foo and B::Foo are not related at all */
public void Foo( double n )
{
Console.WriteLine( "B::Foo" );
}
}
static void Main( string[] args )
{
B b = new B();
/* which Foo is chosen? */
b.Foo( 5 );
}
哪种方法?为什么?运行代码不作弊。
我在网上找到了这个谜题;我喜欢它,我想我会用它作为面试问题...意见?
编辑:我不会因为犯了这个错误而评判候选人,我会用它作为一种方式来展开关于 C# 和 CLR 本身的更全面的讨论,这样我就可以很好地了解候选人的能力。
来源: http://netpl.blogspot.com/2008/06/c-puzzle-no8-beginner.html