__try_cast

Hinweis, das dieses Thema nur auf Version 1 von Managed Extensions for C++ gilt. Diese Syntax sollte nur verwendet werden, um Code zu erhalten, Version 1. Weitere Informationen finden Sie unter safe_cast zu Informationen über die Verwendung der entsprechenden Funktionen in der neuen Syntax.

Führt die angegebene Umwandlung oder löst eine Ausnahme aus, wenn die Umwandlung fehlschlägt.

__try_cast < type-id > ( expression )

Hinweise

Das Schlüsselwort (ähnlich __try_cast im Verhalten zu dynamic_cast) bietet Unterstützung für automatisch eine Ausnahme ausgelöst (vom Typ System::InvalidCastException) Umwandlungs wenn der angegebene Vorgang fehlschlägt.

Das __try_cast-Schlüsselwort kann während der Testphase der Anwendung verwendet werden und die möglichen Umwandlungs automatisch von Fehlern warnen.

Wenn Sie Managed Extensions for C++ portieren, ersetzen Sie __try_cast Aufrufe von safe_cast.

__try_cast funktioniert nicht mit Umwandlungen eines Zeigers auf Werttypen (__value), da es nicht möglich ist, die Typen zur Laufzeit zu überprüfen.

Beispiel

Im folgenden Beispiel wird versucht, einen Zeiger (von Derived-Typ) zu einem anderen MoreDerived der Zeiger (Typ) umzuwandeln. Wenn die Umwandlung fehlschlägt, wird sie mit dem catch-Block abgefangen und ausgegeben:

// keyword__try_cast.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
using namespace System;

__gc struct Base {}; 
__gc struct Derived : Base {};
__gc struct MoreDerived : Derived {};

int main() {
   Base*bp = new Derived;
   try {
       MoreDerived* mdp = __try_cast<MoreDerived*>(bp);
   }
   catch(System::InvalidCastException*) {
       Console::WriteLine("Could not cast 'bp' to MoreDerived*");
   }
}

Output

Could not cast 'bp' to MoreDerived*