ユーザ用ツール

サイト用ツール


型情報

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
型情報 [2009/02/03 07:22]
admin
— (現在)
ライン 1: ライン 1:
-{{indexmenu_n>​27}} 
-====== 型情報 ====== 
  
- 
-C++ではコンパイルされてしまえば型情報はなくなります。例えばインスタンスからそのクラス名を取得することはできません。C++/​CLIでは、型情報はなんでも取得できます。 
- 
-最も簡単な型情報の取得はtypeidキーワードを使っておこないます。 
-<code cpp> 
-using namespace System; 
-int main() 
-{ 
-    Type^ t = String::​typeid;​ 
-    Console::​WriteLine(t->​FullName);​ 
-    Console::​WriteLine(t->​AssemblyQualifiedName);​ 
-    return 0; 
-} 
-</​code>​ 
-型情報はクラスtypeを使ってアクセスします。 
- 
-インスタンスからtypeを得るには、ObjectのメソッドであるGetType()を利用します。 
-<code cpp> 
-using namespace System; 
-void showType(Object^ o) 
-{ 
-    Type^ t = o->​GetType();​ 
-    Console::​WriteLine(t->​FullName);​ 
-    Console::​WriteLine(t->​AssemblyQualifiedName);​ 
-} 
-ref class C { 
-    int a; 
-}; 
-int main() 
-{ 
-    String^ s = L"​ABC";​ 
-    showType(s);​ 
-    int i = 0; 
-    showType(i);​ 
-    C^ c = gcnew C; 
-    showType(c);​ 
-    array<​C^>​^ ar = gcnew array<​C^>​(10);​ 
-    showType(ar);​ 
-    return 0; 
-} 
-</​code>​ 
-Type::​GetType(String)を使用すれば、任意の名前からTypeを取得できます。 
- 
-<code cpp> 
-using namespace System; 
-int main() 
-{ 
-    Type^ t1 = Type::​GetType("​System.Console"​);​ 
-    return 0; 
-} 
-</​code>​ 
-Type::​GetType()に渡す文字列は、AssemblyQualifiedNameというものを指定します。この場合ネームスペースの区切り文字はコロンではなくピリオドになります。 
- 
-Typeクラスは同じクラスに対して常に同じインスタンスを返すことを保障しています。よって==などでTypeクラスのハンドルを比較し、同じ型かどうか調べることができます。 



/var/www/html/virtual/cppcli/data/attic/型情報.1233613337.txt.gz · 最終更新: 2013/12/23 09:07 (外部編集)