Mam nadzieję, że ten rodzaj „zagadki” jest ontopyczny w Programowaniu łamigłówek i Code Golf.
Podaj przykład sytuacji, w której poniższa metoda C # zwracafalse
:
public class Giraffe : Animal
{
public bool Test()
{
return this is Giraffe;
}
}
Reguły: Powyższe wiersze kodu nie mogą być w żaden sposób zmieniane, ale należy umieścić kod w aplikacji, aby kompilacja „projektu” i wywołanie metody Po uruchomieniu metoda musi zwrócić false
. Rozwiązanie, które mam na myśli, nie emituje własnej IL w czasie wykonywania ani podobnych „egzotycznych” rzeczy, jest to zwykłe wywołanie metody instancji.
Animal giraffe = new Giraffe(); giraffe.Test();
a klasa nadrzędna Animal
ma Test()
metodę, która zwraca false
. To trochę oszukuje, ponieważ wywołuje metodę klasy nadrzędnej, a nie metodę Giraffe
. Ale strona połączeń wygląda tak samo.
false
, więc nie powiedziałbym, że było to pełne rozwiązanie. Ale wciąż interesujące. Moje rozwiązanie nie ma żadnej metody ukrywania (podpowiedzi), ale jak powiedziałem, inne rozwiązania mogą być również interesujące.
Giraffe giraffe = new Giraffe(); giraffe.Test();
musi się to zdarzyć, aby wiersz w tej metodzie został faktycznie wykonany?