Espero que este tipo de "acertijo" sea un tema de programación en Puzzles y Code Golf.
Dé un ejemplo de una situación en la que el siguiente método de C # devuelvefalse
:
public class Giraffe : Animal
{
public bool Test()
{
return this is Giraffe;
}
}
Reglas: Las líneas de código anteriores no deben cambiarse de ninguna manera, pero debe colocar el código en una aplicación para que se compile el "proyecto" y se llame al método. Cuando se ejecuta, el método debe regresar false
. La solución que tengo en mente, no emite su propia IL en tiempo de ejecución o cosas "exóticas" similares, es una llamada de método de instancia ordinaria.
Animal giraffe = new Giraffe(); giraffe.Test();
y la clase padre Animal
tiene un Test()
método que devuelve false
. Eso es un poco engañoso, ya que llama al método de la clase padre en lugar del Giraffe
's. Pero el sitio de la llamada se ve igual.
false
, por lo que no diría que fue una solución completa. Pero interesante aún. Mi solución no tiene ningún método de ocultación (pista), pero como dije, otras soluciones también podrían ser interesantes.
Giraffe giraffe = new Giraffe(); giraffe.Test();
debe ocurrir de alguna manera para que la línea de ese método se ejecute?