C# 潜在的面试问题......太难了?

标签 c# .net puzzle

<分区>

在不运行这段代码的情况下,确定将调用哪个 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

最佳答案

我真的不会用这个作为面试问题。我知道答案及其背后的原因,但这样的事情应该很少出现,所以应该不是问题。知道答案并不能说明候选人的编码能力。

请注意,即使 A.Foo 是虚拟的并且 B 覆盖了它,您也会得到相同的行为。

如果您喜欢 C# 谜题和怪事,I've got a few too (including this one) .

关于C# 潜在的面试问题......太难了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/154112/

相关文章:

c# - 在分配局部变量之前从异步方法返回

c# - 如何使用自签名客户端证书修复 asp.net core 3.1 中的 RevocationStatusUnknown

c# - 搜索目录中的所有文件时显示进度

c# - 如何将列表或字典类型作为单个变量存储到 SQL 中?

.net - app.config 中的多个相同的自定义配置部分

algorithm - 找到最小的重叠作业集

java - 使用 Axis 1.4 设置自定义 SOAP header

c# - 如果存在两个具有相似 SSID 的 WiFi 网络,您如何在代码中区分两者?

algorithm - 什么是用于表示解剖拼图 block 的智能数据结构?

安卓 slider 拼图