Без запуска этого кода определите, какой метод 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 );
}
Какой метод? И почему? Не обманывайте, запустив код.
Я нашел эту головоломку в Интернете; Мне нравится, и я думаю, что буду использовать его в качестве интервью... Мнения?
EDIT: Я бы не стал судить кандидата по поводу этого неправильно, я бы использовал его как способ открыть более полную дискуссию о С# и CLR, поэтому я могу хорошо понять возможности кандидатов.
Источник: http://netpl.blogspot.com/2008/06/c-puzzle-no8-beginner.html