型の比較

データ型

整数

  符号あり 符号なし
C++ int unsigned int
C++/CLI int※1 unsigned int
System::Int32 System::UInt32
C# int※1 uint
System.Int32 System.UInt32
Java int ---
java.lang.Integer ---
※1 intはSystem.Int32構造体の別名であり、実体は構造体です。

バイト数による比較

C++/CLIは、unmanagedはC++に、managedはC#と同じです。

符号あり整数
バイト数 C++ C# Java
1 char sbyte System.Sbyte byte
2 wchar_t char System.Char ---
2 short short System.Int16 short
4 int int System.Int32 int
4 long --- ---
8 __int64 long System.Int64 long
符号なし整数
バイト数 C++ C# Java
1 unsigned char byte System.Byte ---
2 unsigned short ushort System.Uint16 char
4 unsigned int uint System.Uint32 ---
8 --- ulong System.Uint64 ---
浮動小数点数型
バイト数 C++ C# Java
4 float float System.Single float
8 double double System.Double double
16 --- decimal System.Decimal ---

名前付定数 (named constant)

キーワード
初期値 定数 定数または変数
初期化タイミング コンパイル時 実行時
C++ const --- ---
C++/CLI const literal initonly
C# --- const readonly
Java --- final ---

キャスト (type casting)

  チェックなし 失敗時にNULLを返す 失敗時に例外を投げる
C++ () キャスト演算子 static_cast dynamic_cast※1 dynamic_cast※2
C++/CLI dynamic_cast※2
safe_cast
C# --- as演算子 () キャスト演算子
※1 参照型の場合は、例外を投げます。
※2 ポインタの場合は、NULLを返します。

特殊なキャスト

  const、volatile
の削除と付加
ポインタ型の変換
C++ const_cast reinterpret_cast
C++/CLI const_cast reinterpret_cast
C# --- ---

型情報の取得

  インスタンスから取得 クラス名から取得
C++
type_info& type = typeid( obj );
※typeinfoヘッダをインクルードする必要があります。
---
C++/CLI
Type^ type = obj->GetType();
Type^ type = Type::GetType( "String" );
または
Type^ type = String::typeid;
(typeid演算子)
C#
Type type = obj.GetType();
Type type = Type.GetType( "String" );
または
Type type = typeof( "String" );
(typeof演算子)