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 Animalma 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?