Kann jemand das Verhalten dieses Codes erklären, wie ich mit Polymorphismus spiele ich mit diesem Code durch Zufall kam, und ich bin wirklich mit seinem Verhalten verwirrt:Polymorphismus: Was ist der wahre Typ der aufgerufenen Methode?
public class Book
{
public virtual void Method()
{
Console.WriteLine("Book/ I am here in "+ GetType().Name);
}
}
class Chapter : Book
{
public new void Method()
{
Console.WriteLine("Chapter/ I am here in "+ GetType().Name);
}
static void Main()
{
Book myBook = new Chapter() ;
myBook.Method();
}
}
Die Ausgabe dieses Programms ist
Buch/ich bin hier in Kapitel
Dies bedeutet, dass die Instanz das Verfahren innerhalb des Buches Klasse genannt, wird aber die Art chapter
. Ist die Methode GetType()
von der Instanz abhängig, mit der sie aufgerufen wurde, nicht von der Klasse, in der sie liegt?
Es gibt nicht viel Bedarf für eine Methode, die den statischen Typ basierend auf der Anrufposition zurückgibt, da Sie diese Informationen leichter zur Hand haben. –