C++和C#的数据类型对比
c++ c#
=====================================
word ushort
dword uint
uchar int/byte 大部分情况都可以使用int代替,而如果需要严格对齐的话则应该用bytebyte
uchar* string/intptr
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
api与c#的数据类型对应关系表 |
|||||
api数据类型 | 类型描述 | c#类型 | api数据类型 | 类型描述 | c#类型 |
word | 16位无符号整数 | ushort | char | 字符 | char |
long | 32位无符号整数 | int | dwordlong | 64位长整数 | long |
dword | 32位无符号整数 | uint | hdc | 设备描述表句柄 | int |
handle | 句柄,32位整数 | int | hgdiobj | gdi对象句柄 | int |
uint | 32位无符号整数 | uint | hinstance | 实例句柄 | int |
bool | 32位布尔型整数 | bool | hwm | 窗口句柄 | int |
lpstr | 指向字符的32位指针 | string | hparam | 32位消息参数 | int |
lpcstr | 指向常字符的32位指针 | string | lparam | 32位消息参数 | int |
byte | 字节 | byte | wparam | 32位消息参数 | int |
bool=system.int32
boolean=system.int32
byte=system.uint16
char=system.int16
colorref=system.uint32
dword=system.uint32
dword32=system.uint32
dword64=system.uint64
float=system.float
haccel=system.intptr
handle=system.intptr
hbitmap=system.intptr
hbrush=system.intptr
hconv=system.intptr
hconvlist=system.intptr
hcursor=system.intptr
hdc=system.intptr
hddedata=system.intptr
hdesk=system.intptr
hdrop=system.intptr
hdwp=system.intptr
henhmetafile=system.intptr
hfile=system.intptr
hfont=system.intptr
hgdiobj=system.intptr
hglobal=system.intptr
hhook=system.intptr
hicon=system.intptr
himagelist=system.intptr
himc=system.intptr
hinstance=system.intptr
hkey=system.intptr
hlocal=system.intptr
hmenu=system.intptr
hmetafile=system.intptr
hmodule=system.intptr
hmonitor=system.intptr
hpalette=system.intptr
hpen=system.intptr
hrgn=system.intptr
hrsrc=system.intptr
hsz=system.intptr
hwinsta=system.intptr
hwnd=system.intptr
int=system.int32
int32=system.int32
int64=system.int64
long=system.int32
long32=system.int32
long64=system.int64
longlong=system.int64
lparam=system.intptr
lpbool=system.int16[]
lpbyte=system.uint16[]
lpcolorref=system.uint32[]
lpcstr=system.string
lpctstr=system.string
lpcvoid=system.uint32
lpcwstr=system.string
lpdword=system.uint32[]
lphandle=system.uint32
lpint=system.int32[]
lplong=system.int32[]
lpstr=system.string
lptstr=system.string
lpvoid=system.uint32
lpword=system.int32[]
lpwstr=system.string
lresult=system.intptr
pbool=system.int16[]
pboolean=system.int16[]
pbyte=system.uint16[]
pchar=system.char[]
pcstr=system.string
pctstr=system.string
pcwch=system.uint32
pcwstr=system.uint32
pdword=system.int32[]
pfloat=system.float[]
phandle=system.uint32
phkey=system.uint32
pint=system.int32[]
plcid=system.uint32
plong=system.int32[]
pluid=system.uint32
pshort=system.int16[]
pstr=system.string
ptbyte=system.char[]
ptchar=system.char[]
ptstr=system.string
puchar=system.char[]
puint=system.uint32[]
pulong=system.uint32[]
pushort=system.uint16[]
pvoid=system.uint32
pwchar=system.char[]
pword=system.int16[]
pwstr=system.string
regsam=system.uint32
sc_handle=system.intptr
sc_lock=system.intptr
short=system.int16
size_t=system.uint32
ssize_=system.uint32
tbyte=system.char
tchar=system.char
uchar=system.byte
uint=system.uint32
uint32=system.uint32
uint64=system.uint64
ulong=system.uint32
ulong32=system.uint32
ulong64=system.uint64
ulonglong=system.uint64
ushort=system.uint16
word=system.uint16
wparam=system.intptr
<———补充———–>
wtypes.h 中的非托管类型 非托管c 语言类型 托管类名 说明
handlevoid* system.intptr 32 位
byteunsigned char system.byte 8 位
shortshort system.int16 16 位
wordunsigned short system.uint16 16 位
intint system.int32 32 位
uintunsigned int system.uint32 32 位
longlong system.int32 32 位
boollong system.int32 32 位
dwordunsigned long system.uint32 32 位
ulongunsigned longsystem.uint32 32 位
charchar system.char 用 ansi 修饰。
lpstrchar* system.string 或 system.stringbuilder 用 ansi 修饰。
lpcstrconst char* system.string 或 system.stringbuilder 用 ansi 修饰。
lpwstrwchar_t* system.string 或 system.stringbuilder 用 unicode 修饰。
lpcwstrconst wchar_t*system.string 或 system.stringbuilder 用 unicode 修饰。
floatfloat system.single 32 位
doubledouble system.double 64 位
上一篇: java对象的killNull