Type::HasElementTypeImpl Method ()
When overridden in a derived class, implements the HasElementType property and determines whether the current Type encompasses or refers to another type; that is, whether the current Type is an array, a pointer, or is passed by reference.
Assembly: mscorlib (in mscorlib.dll)
For example, Type.GetType("Int32[]").HasElementTypeImpl returns true, but Type.GetType("Int32").HasElementTypeImpl returns false. HasElementTypeImpl also returns true for "Int32*" and "Int32&".
The following example defines the class MyTypeDelegator, which overrides the HasElementTypeImpl method. The main class checks for the HasElementType property and displays the element type.
using namespace System; using namespace System::Reflection; public ref class MyTypeDelegator: public TypeDelegator { public: String^ myElementType; private: Type^ myType; public: MyTypeDelegator( Type^ myType ) : TypeDelegator( myType ) { this->myType = myType; } protected: // Override Type::HasElementTypeImpl(). virtual bool HasElementTypeImpl() override { // Determine whether the type is an array. if ( myType->IsArray ) { myElementType = "array"; return true; } // Determine whether the type is a reference. if ( myType->IsByRef ) { myElementType = "reference"; return true; } // Determine whether the type is a pointer. if ( myType->IsPointer ) { myElementType = "pointer"; return true; } // Return false if the type is not a reference, array, or pointer type. return false; } }; int main() { try { int myInt = 0; array<Int32>^myArray = gcnew array<Int32>(5); MyTypeDelegator^ myType = gcnew MyTypeDelegator( myArray->GetType() ); // Determine whether myType is an array, pointer, reference type. Console::WriteLine( "\nDetermine whether a variable is an array, pointer, or reference type.\n" ); if ( myType->HasElementType ) Console::WriteLine( "The type of myArray is {0}.", myType->myElementType ); else Console::WriteLine( "myArray is not an array, pointer, or reference type." ); myType = gcnew MyTypeDelegator( myInt.GetType() ); // Determine whether myType is an array, pointer, reference type. if ( myType->HasElementType ) Console::WriteLine( "The type of myInt is {0}.", myType->myElementType ); else Console::WriteLine( "myInt is not an array, pointer, or reference type." ); } catch ( Exception^ e ) { Console::WriteLine( "Exception: {0}", e->Message ); } }
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0