在使用.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 | 
