75 Stimmen

Was ist der Unterschied zwischen myCustomer.GetType() und typeof(Customer) in C#?

Ich habe beides in einem Code gesehen, den ich betreue, kenne aber den Unterschied nicht. Gibt es einen?

Ich möchte hinzufügen, dass myCustomer eine Instanz von Customer ist.

2voto

David Pokluda Punkte 10329

Typeof wird zur Kompilierzeit ausgeführt, GetType zur Laufzeit. Das ist es, was diese beiden Methoden so unterschiedlich macht. Deshalb können Sie, wenn Sie sich mit der Typenhierarchie befassen, den genauen Typnamen eines Typs herausfinden, indem Sie einfach GetType ausführen.

public Type WhoAreYou(Base base)
{
   base.GetType();
}

1voto

Praveen Kumar Punkte 11

Der typeof-Operator nimmt einen Typ als Parameter an. Er wird zur Kompilierzeit aufgelöst. Die Methode GetType wird für ein Objekt aufgerufen und zur Laufzeit aufgelöst. Der erste Operator wird verwendet, wenn ein bekannter Typ verwendet werden soll, der zweite dient dazu, den Typ eines Objekts zu ermitteln, wenn dieser nicht bekannt ist.

class BaseClass
{ }

class DerivedClass : BaseClass
{ }

class FinalClass
{
    static void RevealType(BaseClass baseCla)
    {
        Console.WriteLine(typeof(BaseClass));  // compile time
        Console.WriteLine(baseCla.GetType());  // run time
    }

    static void Main(string[] str)
    {
        RevealType(new BaseClass());

        Console.ReadLine();
    }
}
// *********  By Praveen Kumar Srivastava

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X