이런 종류의 "수수께끼"가 Programming Puzzles & Code Golf에서 주제가되기를 바랍니다.
아래 C # 메소드가 리턴false
하는 상황의 예를 제공하십시오 .
public class Giraffe : Animal
{
public bool Test()
{
return this is Giraffe;
}
}
규칙 : 위의 코드 줄은 어떤 식 으로든 변경해서는 안되지만 "프로젝트"가 컴파일되고 메서드가 호출되도록 코드를 응용 프로그램에 넣습니다. 실행될 때 메소드는를 리턴해야합니다 false
. 내가 생각한 솔루션은 런타임이나 유사한 "이국적인"것에서 자체 IL을 방출하지 않으며 일반적인 인스턴스 메소드 호출입니다.
@ JesseC.Slicer 예, 내가 생각한 솔루션에서 그 선이 발생합니다. 물론 내가 생각하지 않은 다른 솔루션을 보는 것이 흥미로울 수 있습니다. 따라서 무언가가 있다면 게시하십시오!
—
Jeppe Stig Nielsen
글쎄, 내 간단한 솔루션은 더 비슷해 보이고
—
제시 C. 슬라이서
Animal giraffe = new Giraffe(); giraffe.Test();
부모 클래스 Animal
에는 Test()
을 반환 하는 메서드가 false
있습니다. 의 클래스가 아닌 부모 클래스 메서드를 호출 할 때 약간의 부정 행위 Giraffe
입니다. 그러나 호출 사이트는 동일하게 보입니다.
@ JesseC.Slicer 아, 알겠습니다. 나는 당신의 "솔루션"을 사용하는 것이 (아래 문제의 방법이 아니라) (내 문제에서 말한 것처럼) 반환
—
Jeppe Stig Nielsen
false
하지 않는다고 주장하므로 완전한 솔루션이라고는 말할 수 없습니다. 그러나 여전히 흥미 롭습니다. 내 솔루션에는 메소드 숨기기 (힌트)가 없지만 내가 말했듯이 다른 솔루션도 흥미로울 수 있습니다.
Giraffe giraffe = new Giraffe(); giraffe.Test();
해야 한다는 것을 의미 합니까?