我希望在“ Programming Puzzles&Code Golf”中可以找到这种“谜语”。
举例说明以下C#方法返回的情况false
:
public class Giraffe : Animal
{
public bool Test()
{
return this is Giraffe;
}
}
规则:上面的代码行不能以任何方式更改,但是您可以将代码放入应用程序中,以便编译“项目”并调用该方法。运行时,该方法必须返回false
。我想到的解决方案不会在运行时或类似的“异国情调”事物中发出自己的IL,这是一个普通的实例方法调用。
@ JesseC.Slicer是的,在我想到的解决方案中,确实出现了这一行。当然,看到我也没有想到的其他解决方案可能会很有趣。因此,如果您有东西,请张贴!
—
Jeppe Stig Nielsen
好吧,我的简单解决方案看起来更像
—
Jesse C. Slicer 2013年
Animal giraffe = new Giraffe(); giraffe.Test();
,并且父类Animal
有一个Test()
return的方法false
。这有点作弊,因为它调用了父类方法而不是Giraffe
。但是呼叫站点看起来相同。
@ JesseC.Slicer啊,我知道了。我认为使用您的“解决方案”并不是返回的“下面的方法”(正如我在问题中所说的)
—
2013年
false
,因此我不会说这是一个完整的解决方案。但是仍然很有趣。我的解决方案没有任何隐藏方法(提示),但是正如我所说,其他解决方案也可能很有趣。
Giraffe giraffe = new Giraffe(); giraffe.Test();
必须以某种方式发生,以便实际上执行该方法中的行吗?