我是一个64位的进程,我的int
大小是8个字节。
我正在引用一个编译为32位的dll。
此dll具有接受int
参数的函数。
会发生什么?
我正在向8 byte
“容器”发送4 byte
吗?
答案 0 :(得分:15)
不,在64位/ C#中,int
仍然是4个字节。
在C#中,int
始终仅仅是global::System.Int32
的别名
引用大小和指针大小会发生什么变化,但无论如何都是由IL抽象出来的 - 没有什么需要改变的。但请注意,CLI仅为32位 xor (nand?)64位。您可能需要其中一个为“任何CPU”。
答案 1 :(得分:3)
它始终映射到System.Int32
,因此只需要4
答案 2 :(得分:3)
在c#中,32位和64位组件的大小相同。 int
或Int32
始终为32位,而long
或Int64
始终为64位。
答案 3 :(得分:1)
int
在C#中总是32位(4字节),但在C ++等其他语言中则不行。
System.IntPtr
在x86机器上是4个字节,在64位OS上是8个字节。如果您想要OS依赖整数类型,请使用此选项。