32/64位进程的int行为?

时间:2012-06-12 07:27:07

标签: c# .net .net-4.0 int

我是一个64位的进程,我的int大小是8个字节。

我正在引用一个编译为32位的dll。

此dll具有接受int参数的函数。

会发生什么?

我正在向8 byte“容器”发送4 byte吗?

4 个答案:

答案 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位组件的大小相同。 intInt32始终为32位,而longInt64始终为64位。

答案 3 :(得分:1)

int在C#中总是32位(4字节),但在C ++等其他语言中则不行。 System.IntPtr在x86机器上是4个字节,在64位OS上是8个字节。如果您想要OS依赖整数类型,请使用此选项。