Espero que esse tipo de "enigma" seja onópico em Programação de quebra-cabeças e código de golfe.
Dê um exemplo de uma situação em que o método C # abaixo retornafalse
:
public class Giraffe : Animal
{
public bool Test()
{
return this is Giraffe;
}
}
Regras: As linhas de código acima não devem ser alteradas de forma alguma, mas você colocaria o código em um aplicativo para que o "projeto" seja compilado e o método seja chamado. Quando executado, o método deve retornar false
. A solução que tenho em mente, não emite sua própria IL em tempo de execução ou coisas "exóticas" semelhantes, é uma chamada de método de instância comum.
Animal giraffe = new Giraffe(); giraffe.Test();
e a classe pai Animal
tem um Test()
método que retorna false
. Isso está enganando um pouco, pois chama o método de classe pai, e não o método Giraffe
. Mas o site de chamada parece o mesmo.
false
, então não diria que era uma solução completa. Mas ainda interessante. Minha solução não tem nenhum método oculto (dica), mas como eu disse, outras soluções também podem ser interessantes.
Giraffe giraffe = new Giraffe(); giraffe.Test();
deve ocorrer de alguma forma, para que a linha desse método seja, de fato, executada?