This topic shows how to implement the functionality of the is and as C# keywords in C++.
For more information, see
Example
В | Copy Code |
---|---|
// CS_is_as.cpp // compile with: /clr using namespace System; interface class I { public: void F(); }; ref struct C : public I { virtual void F( void ) { } }; template < class T, class U > Boolean isinst(U u) { return dynamic_cast< T >(u) != nullptr; } int main() { C ^ c = gcnew C(); I ^ i = safe_cast< I ^ >(c); // is (maps to castclass in IL) I ^ ii = dynamic_cast< I ^ >(c); // as (maps to isinst in IL) // simulate 'as': Object ^ o = "f"; if ( isinst< String ^ >(o) ) Console::WriteLine("o is a string"); } |
Output
В | |
---|---|
o is a string |