Aracılığıyla paylaş


typeid (C++/CLI ve C++/CX)

Bir nesnenin türünü gösteren bir değer alır.

Not

Bu konu, tür kimliğinin C++ Bileşen Uzantıları sürümünü ifade eder. Bu anahtar sözcüğün ISO C++ sürümü için bkz . typeid İşleci.

Tüm Çalışma Zamanları

Sözdizimi

T::typeid

Parametreler

T
Bir tür adı.

Windows Çalışma Zamanı

Sözdizimi

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

Parametreler

T
Bir tür adı.

Açıklamalar

C++/CX'te typeid, çalışma zamanı türü bilgilerinden oluşturulan platform ::Type değerini döndürür.

Gereksinimler

Derleyici seçeneği: /ZW

Ortak Dil Çalışma Zamanı

Sözdizimi

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

Parametreler

type
Nesnesini istediğiniz System::Type türün adı (soyut bildirimci).

Açıklamalar

typeid derleme zamanında bir tür için öğesini almak Type için kullanılır.

typeid, veya GetTypekullanarak GetType bir tür için çalışma zamanında alma System::Type işlemine benzer. Ancak, typeid yalnızca bir tür adını parametre olarak kabul eder. Adını almak System::Type için bir tür örneği kullanmak istiyorsanız kullanın GetType.

typeid derleme zamanında tür adını (tür) değerlendirebilmesi gerekirken, GetType çalışma zamanında döndürülecek türü değerlendirir.

typeidyerel tür adı veya yerel tür adı için ortak dil çalışma zamanı diğer adı alabilir; Daha fazla bilgi için bkz. .NET Framework C++ Yerel Türlerine Eşdeğerler (C++/CLI).

typeid yerel türlerle de çalışır, ancak yine de döndürür System::Type. type_info bir yapı elde etmek için İşleç'i kullanıntypeid.

Gereksinimler

Derleyici seçeneği: /clr

Örnekler

Aşağıdaki örnek typeid anahtar sözcüğünü üyeyle GetType() karşılaştırır.

// 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*

Aşağıdaki örnekte, bir türdeki öznitelikleri almak için System::Type türünde bir değişkenin kullanılabileceğini gösterir. Ayrıca, bazı türlerde kullanmak typeidiçin bir typedef oluşturmanız gerekeceğini gösterir.

// 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

Ayrıca bkz.

.NET ve UWP İçin Bileşen Uzantıları