Umarım bu tür "bilmece" Programming Puzzles & Code Golf programında ontopiktir.
Aşağıdaki C # yönteminin geri döndüğüfalse
duruma bir örnek verin :
public class Giraffe : Animal
{
public bool Test()
{
return this is Giraffe;
}
}
Kurallar: Yukarıdaki kod satırları hiçbir şekilde değiştirilmemelidir, ancak "proje" derlenecek ve yöntem çağrılacak şekilde kodu bir uygulamaya koyacaksınız. Çalıştırıldığında, yöntem geri dönmelidir false
. Aklımdaki çözüm, çalışma zamanında veya benzer "egzotik" şeylerde kendi IL'sini yaymıyor, sıradan bir örnek yöntem çağrısı.
Animal giraffe = new Giraffe(); giraffe.Test();
ve ana sınıf geri dönen Animal
bir Test()
metoda sahip false
. Bu, Giraffe
's' den ziyade ebeveyn sınıf yöntemini çağırdığı için biraz hile yapmak . Ancak çağrı sitesi aynı görünüyor.
false
ve bu yüzden bunun tam bir çözüm olduğunu söyleyemeyeceğimi iddia ediyorum. Ama yine de ilginç. Benim çözümümün hiçbir yöntemi gizleme (ipucu) yoktur, ancak dediğim gibi, diğer çözümler de ilginç olabilir.
Giraffe giraffe = new Giraffe(); giraffe.Test();
gerektiğini söylemek istiyorsun, öyle ki, bu yöntemdeki satır, aslında, yürütülür mü?