C# 显然是';在处理DLLImport的东西时,使用Int32而不是int很重要吗?

C# 显然是';在处理DLLImport的东西时,使用Int32而不是int很重要吗?,c#,int,alias,int32,C#,Int,Alias,Int32,在C#中,当处理系统DLLImport/(非托管?)代码时,我在某个地方读到使用Int32确切类型而不是int非常重要。这是真的吗?有人能详细说明为什么这么做很重要吗?我不相信这是真的int是Int32的别名。它们的意思完全相同,并且将被编译为相同的IL 可以找到别名列表。我认为您更可能阅读到关于使用而不是int。正如其他人所说,int和Int32是等价的 在32位系统上交换int和IntPtr实际上不是问题,因为它们的大小相同(4字节)。在64位系统上出现问题-如果您使用int而不是IntPt

在C#中,当处理系统DLLImport/(非托管?)代码时,我在某个地方读到使用Int32确切类型而不是int非常重要。这是真的吗?有人能详细说明为什么这么做很重要吗?

我不相信这是真的
int
Int32
的别名。它们的意思完全相同,并且将被编译为相同的IL


可以找到别名列表。

我认为您更可能阅读到关于使用而不是
int
。正如其他人所说,
int
Int32
是等价的


在32位系统上交换
int
IntPtr
实际上不是问题,因为它们的大小相同(4字节)。在64位系统上出现问题-如果您使用
int
而不是
IntPtr
,它现在的大小不正确(4字节而不是8字节),可能会导致错误。

您记得在哪里读到它吗?如果你能发布链接,那会很有趣。相关:由于同样的原因,不正确地使用IntPtr可能是一个问题。如果要封送的类型是整数,则应使用Int32(或其别名)。如果要封送的类型是指针,则应使用IntPtr。使用IntPtr封送整型将产生问题,因为在64位Windows上,整型仍然是32位(4字节)。类似地,使用integer封送指针也会产生问题。始终为要封送的本机类型使用正确的托管类型,反之亦然。