在C#中,当弄乱那个系统的DLLImport /(非托管?)代码的东西时,我在某处读到使用Int32确切类型而不是int是很重要的。这是真的?有人可以详细说明为什么这么做很重要吗?显然,在使用DLLImport的东西时,使用Int32而不是int很重要?
2
A
回答
1
我不相信这是真的。 int
是Int32
的别名。它们意味着完全相同的东西,并将编译到相同的IL。
可以找到别名列表here。
6
我认为你更有可能读到使用IntPtr
而不是int
。正如其他人所说,int
和Int32
是等同的。
这是不是真的到32位系统上交换int
和IntPtr
,因为它们具有相同的尺寸(4个字节)中的问题。问题出现在64位系统上时 - 如果使用int
而不是IntPtr
,则它现在的大小错误(4个字节而不是8个字节),并且可能会导致错误。
+0
错误地使用IntPtr可能是一个问题,出于同样的原因。 如果你编组的类型是一个整数,你应该使用Int32(或它的别名)。如果你编组的类型是一个指针,你应该使用IntPtr。使用IntPtr编组整数会产生问题,因为在64位Windows上,整数仍然是32位(4字节)。同样,使用整数来封送指针会产生问题。 始终使用正在编组的本机类型的正确托管类型,反之亦然。 – hemp 2010-05-18 00:30:42
相关问题
- 1. 创建使用的东西要么不是“用户> ID”
- 2. 发布别的东西,而不是使用Gradle的jar到Nexus
- 3. 在寻找C的东西而不是C++时使用Google的技巧?
- 4. 我应该使用别的东西而不是setTimeout吗?
- 5. 测试线束要求输入,而不是使用写入的东西(作业)
- 6. 的Eclipse 4.4显然使用的东西从3.8
- 7. “X3D”:在使用ElevationGrid时不显示任何东西
- 8. 你认为在页面上使用很多CSS3的东西是不好的吗?
- 9. C - 虽然(东西||东西)
- 10. 使用ServiceStack.Text:重写CreateInstance的东西?
- 11. 使用unix时间的dygraph不会显示任何东西
- 12. 是东西() - >东西总是有效的PHP?这很好用吗?
- 13. file_get_contents与$ _GET一起使用时不显示任何东西
- 14. 的Java:使用短而不是INT
- 15. 一开始的东西,而不是instanciation
- 16. 在这段代码中,我可以使用别的东西而不是“this”吗?
- 17. ResponseText或不能使用钛的东西
- 18. 使用dllimport的
- 19. 在IIS 7中为了使Web应用程序加速而改变所有重要的东西是什么?
- 20. 使用随机类“不必要地复杂”的东西?
- 21. 是否需要宝石加载所有东西,包括我不使用的东西?
- 22. 强制Java双,而不是使用int
- 23. css - 是否有可能使用只有CSS而不是其他东西
- 24. 在类型转换时使用“int”或“Int32”?
- 25. Fancybox的问题,不应该显示某些东西,而是
- 26. 在windows phone中使用richtextbox的东西
- 27. 使用LISP输出的东西,而在COND
- 28. 使用angularjs mocks而不实际嘲弄任何东西
- 29. 当我们使用 “公共类的东西{” 与 “类的东西{”
- 30. 为什么要使用TIMESTAMP而不是INT值?
你碰巧记得你在哪里阅读它?如果你可以发布链接,这将是有趣的。 – 2010-05-17 23:42:05
相关:[62503](http://stackoverflow.com/questions/62503/c-int-or-int32-should-i-care) – hemp 2010-06-03 06:50:27