typeid (C++/CLI et C++/CX)typeid (C++/CLI and C++/CX)

Obtient une valeur qui indique le type d’un objet.Gets a value that indicates the type of an object.

Notes

Cette rubrique fait référence à la version des extensions de composant de typeid.This topic refers to the C++ Component Extensions version of typeid. Pour la version ISO C++ de ce mot clé, consultez Opérateur typeid.For the ISO C++ version of this keyword, see typeid Operator.

Tous les runtimesAll Runtimes

SyntaxeSyntax

T::typeid

ParamètresParameters

TT
Un nom de type.A type name.

Windows RuntimeWindows Runtime

SyntaxeSyntax

Platform::Type^ type = T::typeid;

ParamètresParameters

TT
Un nom de type.A type name.

NotesRemarks

Dans C++/CX, typeid retourne une classe Platform::Type qui est construite à partir des informations sur le type de runtime.In C++/CX, typeid returns a Platform::Type that is constructed from runtime type information.

SpécificationsRequirements

Option du compilateur : /ZWCompiler option: /ZW

Common Language RuntimeCommon Language Runtime

SyntaxeSyntax

type::typeid

ParamètresParameters

typetype
Le nom d’un type (déclarateur abstrait) dont vous souhaitez l’objet System::Type.The name of a type (abstract declarator) for which you want the System::Type object.

NotesRemarks

typeid est utilisé pour obtenir le Type pour un type au moment de la compilation.typeid is used to get the Type for a type at compile time.

typeid est semblable à l’obtention du System::Type pour un type au moment de l’exécution à l’aide de GetType ou de GetType .typeid is similar to getting the System::Type for a type at run time using GetType or GetType. Toutefois, typeid accepte uniquement un nom de type en tant que paramètre.However, typeid only accepts a type name as a parameter. Si vous souhaitez utiliser une instance d’un type pour obtenir son System::Type nom, utilisez GetType .If you want to use an instance of a type to get its System::Type name, use GetType.

typeid doit être en mesure d’évaluer un nom de type (type) au moment de la compilation, tandis que GetType évalue le type à retourner au moment de l’exécution.typeid must be able to evaluate a type name (type) at compile time, whereas GetType evaluates the type to return at run time.

typeid peut prendre un nom de type natif ou common language runtime alias pour le nom de type natif ; Pour plus d’informations, consultez .NET Framework équivalents aux types natifs c++ (c++/CLI) .typeid can take a native type name or common language runtime alias for the native type name; see .NET Framework Equivalents to C++ Native Types (C++/CLI) for more information.

typeid fonctionne également avec les types natifs, même s’il retourne toujours un System::Type .typeid also works with native types, although it will still return a System::Type. Pour obtenir une structure type_info, utilisez typeid Operator.To get a type_info structure, use typeid Operator.

SpécificationsRequirements

Option du compilateur : /clrCompiler option: /clr

ExemplesExamples

L’exemple suivant compare le mot clé typeid au membre GetType().The following example compares the typeid keyword to the GetType() member.

// keyword__typeid.cpp
// compile with: /clr
using namespace System;

ref struct G {
   int i;
};

int main() {
   G ^ pG = gcnew G;
   Type ^ pType = pG->GetType();
   Type ^ pType2 = G::typeid;

   if (pType == pType2)
      Console::WriteLine("typeid and GetType returned the same System::Type");
   Console::WriteLine(G::typeid);

   typedef float* FloatPtr;
   Console::WriteLine(FloatPtr::typeid);
}
typeid and GetType returned the same System::Type
G

System.Single*

L’exemple suivant montre qu’une variable de type System::type peut être utilisée pour obtenir les attributs sur un type.The following sample shows that a variable of type System::Type can be used to get the attributes on a type. Il montre également que pour certains types, vous devrez créer un typedef à utiliser typeid .It also shows that for some types, you will have to create a typedef to use typeid.

// keyword__typeid_2.cpp
// compile with: /clr
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;

typedef int ^ handle_to_int;
typedef int * pointer_to_int;

public ref class MyClass {};

class MyClass2 {};

[attribute(AttributeTargets::All)]
ref class AtClass {
public:
   AtClass(Type ^) {
      Console::WriteLine("in AtClass Type ^ constructor");
   }
};

[attribute(AttributeTargets::All)]
ref class AtClass2 {
public:
   AtClass2() {
      Console::WriteLine("in AtClass2 constructor");
   }
};

// Apply the AtClass and AtClass2 attributes to class B
[AtClass(MyClass::typeid), AtClass2]
[AttributeUsage(AttributeTargets::All)]
ref class B : Attribute {};

int main() {
   Type ^ MyType = B::typeid;

   Console::WriteLine(MyType->IsClass);

   array<Object^>^ MyArray = MyType -> GetCustomAttributes(true);
   for (int i = 0 ; i < MyArray->Length ; i++ )
      Console::WriteLine(MyArray[i]);

   if (int::typeid != pointer_to_int::typeid)
      Console::WriteLine("int::typeid != pointer_to_int::typeid, as expected");

   if (int::typeid == handle_to_int::typeid)
      Console::WriteLine("int::typeid == handle_to_int::typeid, as expected");
}
True

in AtClass2 constructor

in AtClass Type ^ constructor

AtClass2

System.AttributeUsageAttribute

AtClass

int::typeid != pointer_to_int::typeid, as expected

int::typeid == handle_to_int::typeid, as expected

Voir aussiSee also

Extensions de composant pour .NET et UWPComponent Extensions for .NET and UWP