__try_cast
附註本主題僅適用於第 1 版的 Managed Extensions for C++。 這個語法只應該用於維護第 1 版的程式碼。 請參閱safe_cast如有關在新語法中使用的相等功能。
執行指定的轉型,或是如果轉換失敗,會擲回例外狀況。
__try_cast < type-id > ( expression )
備註
__try_cast關鍵字 (類似的行為在 dynamic_cast) 提供支援自動擲回例外狀況 (型別的 System::InvalidCastException) 每次在指定的轉型作業失敗。
__try_cast關鍵字可以用您的應用程式中,然後再自動警示可能的轉型失敗的測試階段。
當位元移植 Managed Extensions for C++,來取代__try_cast與呼叫safe_cast。
__try_cast不能用於實值型別指標的轉換 (__value),因為它不是能夠檢查在執行階段型別。
範例
在下列範例中,嘗試將指標轉換 (的Derived類型) 到另一個指標 (的MoreDerived類型) 之後。 如果轉換失敗,則會攔截,並報告的 catch 區塊:
// 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*