Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
türü
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 System::Typekullanarak GetType bir tür için çalışma zamanında alma GetType 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ç'itypeid.
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