5

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

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

这个dll有一个接受int参数的函数。

会发生什么?

我要发送8 byte4 byte“容器”?

4

4 回答 4

16

不,在 64 位/C# 中,anint仍然是 4 个字节。

C# 中,int总是只是一个别名global::System.Int32

将改变的是参考大小和指针大小,但这一切都被 IL 抽象出来了——什么都不需要改变。但请注意,CLI 只会是 32 位xor (nand?) 64 位。您可能需要其中之一成为“任何 CPU”。

于 2012-06-12T07:31:06.743 回答
3

它总是映射到System.Int32因此只需要 4

于 2012-06-12T07:32:25.577 回答
3

在 c# 中,int 在 32 位和 64 位程序集中的大小相同。intorInt32始终为 32 位,而longorInt64始终为 64 位。

于 2012-06-12T07:32:38.977 回答
1

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

于 2012-06-12T07:51:57.680 回答