我是一个 64 位的进程,我的int
大小是 8 个字节。
我正在引用一个编译为 32 位的 dll。
这个dll有一个接受int
参数的函数。
会发生什么?
我要发送8 byte
到4 byte
“容器”?
不,在 64 位/C# 中,anint
仍然是 4 个字节。
在C# 中,int
总是只是一个别名global::System.Int32
将改变的是参考大小和指针大小,但这一切都被 IL 抽象出来了——什么都不需要改变。但请注意,CLI 只会是 32 位xor (nand?) 64 位。您可能需要其中之一成为“任何 CPU”。
它总是映射到System.Int32
因此只需要 4
在 c# 中,int 在 32 位和 64 位程序集中的大小相同。int
orInt32
始终为 32 位,而long
orInt64
始终为 64 位。
int
在 C# 中总是 32 位(4 字节),但在 C++ 等其他一些语言中则不是。
System.IntPtr
在 x86 机器上是 4 个字节,在 64 位操作系统上是 8 个字节。如果您想要操作系统依赖的整数类型,请使用此选项。