在不运行此代码的情况下,确定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