In der Objekt -orientierten Programmierung ist die Konvertierung des Objekttyps eine übliche Operation. CLR bietet zwei Hauptkonvertierungsmethoden: 'als' Schlüsselwörter und explizite Konvertierung.
' als 'Schlüsselwort
'AS' als "Keyword -Ausführungstypkonvertierung, Nachfolger gibt das Conversion -Objekt zurück und gibt NULL nicht zurück. Es wird normalerweise verwendet, um Objekte in bestimmte Unterklassen oder Schnittstellenimplementierungen umzuwandeln. Zum Beispiel:
Wenn 'obj' eine Instanz von 'Myclass' ist, gibt die 'AS' Komponente einen Verweis auf das 'Myclass' -Objekt zurück.
<code class="language-csharp">object obj = new MyClass(); MyClass cls = obj as MyClass;</code>
drücken Sie die Verwendung von Grammatik aus. Konvertieren Sie das Objekt in einen bestimmten Typ, und die Konvertierung ist ungültig und wirft eine Ausnahme aus. Zum Beispiel:
Ausdruckskonvertierung kann zu Laufzeitfehlern führen, wenn der Conversion -Objekttyp nicht übereinstimmt. (cast-type)
<code class="language-csharp">object obj = new MyClass(); MyClass cls = (MyClass)obj;</code>
Im Allgemeinen sind 'Keywords sicherer, da es Null zurückgibt, wenn die Konvertierung keine Laufzeitfehler vermeidet. Nur wenn die Konvertierung erfolgreich ist und die Leistung wichtig ist, sollte die Konvertierung verwendet werden.
semantische Unterschiede
Der Hauptunterschied zwischen den beiden Methoden ist: "Als Keyword -Check -Objekttyp ist die Konvertierung ungültig und gibt NULL zurück. Dieser Unterschied ist wichtig, wenn der Objekttyp ungewiss ist (z. B. die Verwendung von Reflexion).Empfohlene Methode
Es wird normalerweise empfohlen, "Schlüsselwörter anstelle einer expliziten Konvertierung zu verwenden. Es ist sicherer und der Leistungsverlust ist nicht signifikant. Es ist besonders nützlich, wenn der Objekttyp vor oder dynamische Änderungen ist.
Das obige ist der detaillierte Inhalt vonCasting in C#: Wann man als 'gegen explizites Casting' verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!