在使用.Net互操作时,经常涉及到一些C++到C#的类型转换问题,故此整理了一份类型对照表方便大家查阅。
注意:请使用Ctrl + F
查找您要找的类型即可!
C++与C#数据类型对照表
C++数据类型 |
C#数据类型 |
WORD | ushort |
DWORD | uint |
UCHAR | int/byte |
UCHAR* | string/InPtr |
unsigned char* | [MarshalAs(UnmanagedType.LPArray)]byte[]/(IntPtr) |
char* | string |
LPCTSTR | string |
LPTSTR | [MarshalAs(UnmanagedType.LPTStr)] string |
long | int |
ulong | uint |
Handle | IntPtr |
HWND | IntPtr |
void* | IntPtr |
int | int |
int* | ref int |
*int | IntPtr |
unsigned int | uint |
COLORREF | uint |
Windows(C++)与C#数据类型对照表
Windows数据类型 |
.NET数据类型 |
BOOL, BOOLEAN | Boolean or Int32 |
BSTR | String |
BYTE | Byte |
CHAR | Char |
DOUBLE | Double |
DWORD | Int32 or UInt32 |
FLOAT | Single |
HANDLE (and all other handle types, such as HFONT and HMENU) | IntPtr, UintPtr or HandleRef |
HRESULT | Int32 or UInt32 |
INT | Int32 |
LANGID | Int16 or UInt16 |
LCID | Int32 or UInt32 |
LONG | Int32 |
LPARAM | IntPtr, UintPtr or Object |
LPCSTR | String |
LPCTSTR | String |
LPCWSTR | String |
LPSTR | String or StringBuilder* |
LPTSTR | String or StringBuilder |
LPWSTR | String or StringBuilder |
LPVOID | IntPtr, UintPtr or Object |
LRESULT | IntPtr |
SAFEARRAY | .NET array type |
SHORT | Int16 |
TCHAR | Char |
UCHAR | SByte |
UINT | Int32 or UInt32 |
ULONG | Int32 or UInt32 |
VARIANT | Object |
VARIANT_BOOL | Boolean |
WCHAR | Char |
WORD | Int16 or UInt16 |
WPARAM | IntPtr, UintPtr or Object |
API与C#数据类型对照表
API数据类型 |
类型描述 |
C#数据类型 |
WORD | 16位无符号整数 | ushort |
LONG | 32位无符号整数 | int |
DWORD | 32位无符号整数 | uint |
HANDLE | 句柄,32位整数 | int |
UINT | 32位无符号整数 | uint |
BOOL | 32位布尔型整数 | bool |
LPSTR | 之乡字符的32位指针 | string |
LPCSTR | 指向常字符的32位指针 | string |
BYTE | 字节 | byte |
CHAR | 字符 | char |
DWORDLONG | 64位长度整数 | long |
HDC | 设备描述表句柄 | int |
HGDIOBJ | GDI对象句柄 | int |
HINSTANCE | 实例句柄 | int |
HWM | 窗口句柄 | int |
HPARAM | 32位消息参数 | int |
LPARAM | 32位消息参数 | int |
WPARAM | 32位消息参数 | int |
C++与C#数据类型对照表
C++数据类型 |
C#数据类型 |
BOOL | Int32 |
BOOLEAN | Int32 |
BYTE | UInt16 |
CHAR | UInt16 |
COLORREF | UInt32 |
DWORD | UInt32 |
DWORD32 | UInt32 |
DWORD64 | UInt64 |
FLOAT | Float |
HACCEL | IntPtr |
HANDLE | IntPtr |
HBITMAP | IntPtr |
HBRUSH | IntPtr |
HCONV | IntPtr |
HCONVLIST | IntPtr |
HCURSOR | IntPtr |
HDC | IntPtr |
HDDEDATA | IntPtr |
HDESK | IntPtr |
HDROP | IntPtr |
HDWP | IntPtr |
HENHMETAFILE | IntPtr |
HFILE | IntPtr |
HFONT | IntPtr |
HGDIOBJ | IntPtr |
HGLOBAL | IntPtr |
HHOOK | IntPtr |
HICON | IntPtr |
HIMAGELIST | IntPtr |
HIMC | IntPtr |
HINSTANCE | IntPtr |
HKEY | IntPtr |
HLOCAL | IntPtr |
HMENU | IntPtr |
HMETAFILE | IntPtr |
HMODULE | IntPtr |
HMONITOR | IntPtr |
HPALETTE | IntPtr |
HPEN | IntPtr |
HRGN | IntPtr |
HRSRC | IntPtr |
HSZ | IntPtr |
HWINSTA | IntPtr |
HWND | IntPtr |
INT | Int32 |
INT32 | Int32 |
INT64 | Int64 |
LONG | Int32 |
LONG32 | Int32 |
LONG64 | Int64 |
LONGLONG | Int64 |
LPARAM | IntPtr |
LPBOOL | Int16[] |
LPBYTE | UInt16[] |
LPCOLORREF | UInt32[] |
LPCSTR | String |
LPCTSTR | String |
LPCVOID | UInt32 |
LPCWSTR | String |
LPDWORD | UInt32 |
LPHANDLE | UInt32 |
LPINT | UInt32 |
LPLONG | UInt32 |
LPSTR | String |
LPTSTR | String |
LPVOID | UInt32 |
LPWORD | UInt32[] |
LPWSTR | String |
LRESULT | IntPtr |
PBOOL | Int16[] |
PBOOLEAN | Int16[] |
PBYTE | UInt16[] |
PCHAR | Char[] |
PCSTR | String |
PCTSTR | String |
PCWCH | UInt32 |
PCWSTR | UInt32 |
PDWORD | Int32[] |
FPFLOAT | Float[] |
PHANDLE | UInt32 |
PHKEY | UInt32 |
PINT | Int32[] |
PLCID | UInt32 |
PLONG | Int32[] |
PLUID | Uint32 |
PSHORT | Int16[] |
PSTR | String |
PTBYTE | Char[] |
PTCHAR | Char[] |
PTSTR | String |
PUCHAR | Char[] |
PUINT | UInt32[] |
PULONG | UInt32[] |
PUSHORT | UInt16[] |
PVOID | UInt32 |
PWCHAR | Char[] |
PWORD | Int16[] |
PWSTR | String |
REGSAM | UInt32 |
SC_HANDLE | IntPtr |
SC_LOCK | IntPtr |
SHORT | Int16 |
SIZE_T | UInt32 |
SSIZE | UInt32 |
TBYTE | Char |
TCHAR | Char |
UCHAR | Byte |
UINT | UInt32 |
UINT32 | UInt32 |
UINT64 | UInt64 |
ULONG | UInt32 |
ULONG32 | UInt32 |
ULONG64 | UInt64 |
ULONGLONG | UInt64 |
USHORT | UInt16 |
WORD | UInt16 |
WPARAM | IntPtr |
Wtypes.h与C#数据类型对照表
Wtypes.h中的非托管类型 | 非托管C语言类型 | 托管类名 | 位数 | |
HANDLE | void* | IntPtr | 32 | |
BYTE | unsigned char | Byte | 8 | |
SHORT | short | Int16 | 16 | |
WORD | unsigned short | UInt16 | 16 | |
INT | int | Int32 | 32 | |
UINT | unsigned int | UInt32 | 32 | |
LONG | long | Int32 | 32 | |
BOOL | long | Int32 | 32 | |
DWORD | unsigned long | UInt32 | 32 | |
ULONG | unsigned long | UInt32 | 32 | |
CHAR | char | Char | ||
LPSTR | char* | StringStringBuilder用ANSI修饰 | ||
LPCSTR | Const char* | StringStringBuilder用ANSI修饰 | ||
LPWSTR | wchar_t* | StringStringBuilder用ANSI修饰 | ||
LPCWSTR | Constwchar_t* | StringStringBuilder用ANSI修饰 | ||
FLOAT | Float | Single | 32 | |
DOUBLE | Double | Double | 64 |