相关疑难解决方法(0)

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

如果不运行此代码,请确定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 );
}
Run Code Online (Sandbox Code Playgroud)

哪种方法?为什么?运行代码不会作弊.

我在网上发现了这个难题; 我喜欢它,我想我会把它用作面试问题......意见?

编辑:我不会判断候选人是否错了,我会用它作为一种方式来开展关于C#和CLR本身的更全面的讨论,这样我就可以很好地理解候选人的能力.

资料来源: http ://netpl.blogspot.com/2008/06/c-puzzle-no8-beginner.html

.net c# puzzle

18
推荐指数
7
解决办法
3万
查看次数

n = 0和n = n - n之间的差异

当我读到这个问题时,我记得有人告诉过我(多年前),从装配者的角度来看,这两个操作是非常不同的:

n = 0;

n = n - n;
Run Code Online (Sandbox Code Playgroud)

这是真的,如果是的话,为什么会这样呢?

编辑:正如一些回复所指出的,我想这对于编译器优化到同一个东西来说相当容易.但我觉得有趣的是,如果编译器采用完全通用的方法,它们会有所不同.

c compiler-construction optimization assembly

3
推荐指数
5
解决办法
512
查看次数

标签 统计

.net ×1

assembly ×1

c ×1

c# ×1

compiler-construction ×1

optimization ×1

puzzle ×1