Codebeispiel aus MSDN genommenWarum ist Object.GetType() nicht virtuell?
public class Test {
public static void Main() {
MyBaseClass myBase = new MyBaseClass();
MyDerivedClass myDerived = new MyDerivedClass();
object o = myDerived;
MyBaseClass b = myDerived;
Console.WriteLine("mybase: Type is {0}", myBase.GetType());
Console.WriteLine("myDerived: Type is {0}", myDerived.GetType());
Console.WriteLine("object o = myDerived: Type is {0}", o.GetType());
Console.WriteLine("MyBaseClass b = myDerived: Type is {0}", b.GetType()); }}
/*
This code produces the following output.
mybase: Type is MyBaseClass
myDerived: Type is MyDerivedClass
object o = myDerived: Type is MyDerivedClass
MyBaseClass b = myDerived: Type is MyDerivedClass
*/
wäre es also logisch GetType() virtuell zumindest funktioniert es als virtuelle zu machen? Kann das jemand erklären? Und andere Frage Gibt es noch andere Methoden im .NET Framework, die GetType ähnlich verhalten?
und recht so! –
ja. Du hast recht. aber Sie können diese öffentliche Methode in der abgeleiteten Klasse überladen)) – Arseny
@Arseny: Dann ist es nicht dasselbe wie GetType() wie für den Objekttyp definiert. –