最近在研究pos打印機相關功能, 調用winapi以及跨進程通信等,都涉及到類型之間的轉換。
| C/C++ |
C# |
| HANDLE, LPDWORD, LPVOID, void* |
IntPtr |
| LPCTSTR, LPCTSTR, LPSTR, char*, const char*, Wchar_t*, LPWSTR |
String [in], StringBuilder [in, out] |
| DWORD, unsigned long, Ulong |
UInt32, [MarshalAs(UnmanagedType.U4)] |
| bool |
bool |
| LP<struct> |
[In] ref <struct> |
| SIZE_T |
uint |
| LPDWORD |
out uint |
| LPTSTR |
[Out] StringBuilder |
| PULARGE_INTEGER |
out ulong |
| WORD |
uInt16 |
| Byte, unsigned char |
byte |
| Short |
Int16 |
| Long, int |
Int32 |
| float |
single |
| double |
double |
| NULL pointer |
IntPtr.Zero |
| Uint |
Uint32 |
| Windows Data Type |
.NET Data Type |
| 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 |
| Wtypes.h 中的非托管類型 |
非托管 C 語言類型 |
托管類名 |
說明 |
| HANDLE |
void* |
System.IntPtr |
在 32 位 Windows 操作系統上為 32 位,在 64 位 Windows 操作系統上為 64 位。 |
| BYTE |
unsigned char |
System.Byte |
8 位 |
| SHORT |
short |
System.Int16 |
16 位 |
| WORD |
unsigned short |
System.UInt16 |
16 位 |
| INT |
int |
System.Int32 |
32 位 |
| UINT |
unsigned int |
System.UInt32 |
32 位 |
| LONG |
long |
System.Int32 |
32 位 |
| BOOL |
long |
System.Int32 |
32 位 |
| DWORD |
unsigned long |
System.UInt32 |
32 位 |
| ULONG |
unsigned long |
System.UInt32 |
32 位 |
| CHAR |
char |
System.Char |
用 ANSI 修飾。 |
| LPSTR |
char* |
System.String 或 System.Text.StringBuilder |
用 ANSI 修飾。 |
| LPCSTR |
Const char* |
System.String 或 System.Text.StringBuilder |
用 ANSI 修飾。 |
| LPWSTR |
wchar_t* |
System.String 或 System.Text.StringBuilder |
用 Unicode 修飾。 |
| LPCWSTR |
Const wchar_t* |
System.String 或 System.Text.StringBuilder |
用 Unicode 修飾。 |
| FLOAT |
Float |
System.Single |
32 位 |
| DOUBLE |
Double |
System.Double |
64 位 |
