İngilizce dilinde oku

Aracılığıyla paylaş


__try_cast

Not bu konuda yalnızca yönetilen uzantılar 1 için C++ sürümüdür. Bu sözdizimi, yalnızca sürüm 1 kodunu korumak için kullanılmalıdır. Bkz: safe_cast yeni sözdizimine eşdeğer işlev kullanma hakkında bilgi için.

Cast başarısız olursa bir istisna atar veya belirtilen atama yapar.

__try_cast < type-id > ( expression )

Notlar

__try_cast Anahtar sözcük (benzer davranış için dynamic_cast) otomatik olarak bir özel durum üretiliyor için destek sağlar (tür System::InvalidCastException) olduğunda belirtilen çevrim işlemi başarısız olur.

__try_cast Anahtar sözcüğünü olası çevrim hataları uyarmak otomatik olarak uygulama, sınama aşaması sırasında kullanılabilir.

C++ için yönetilen uzantılar porting, yerini __try_cast birlikte çağıran safe_cast.

__try_castdeğer türleri için işaretçiyi yayınları çalışmaz (__value), zamanında türlerini denetlemek mümkün olmadığından.

Örnek

Aşağıdaki örnekte, bir işaretçi artığını denemesi (, Derived türü) başka bir fare işaretçisini (, MoreDerived türü) yapılır. Cast başarısız olursa, yakalandı ve catch bloğu tarafından bildirdi:

// 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*");
   }
}

Çıktı

Could not cast 'bp' to MoreDerived*