共用方式為


__try_cast

注意:本主題只適用於 Managed Extensions for C++ 第 1 版。 這個語法只可用於維護第 1 版的程式碼。 如需有關在新語法中使用對等功能的詳細資訊,請參閱 safe_cast (C++ 元件擴充功能)

如果轉型失敗,會執行指定的轉型或擲回例外狀況。

__try_cast < type-id > ( expression )

備註

__try_cast 關鍵字 (與 dynamic_cast 的行為類似) 支援在指定的轉型作業失敗時自動擲回例外狀況 (屬於類型 System::InvalidCastException)。

應用程式測試階段可以使用 __try_cast 關鍵字自動提醒您注意可能發生的轉型失敗。

移植 Managed Extensions for C++ 時,請以 safe_cast (C++ 元件擴充功能) 取代 __try_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*");
   }
}

輸出

Could not cast 'bp' to MoreDerived*