2008-11-11 50 views
2

虽然在.NET应用程序的工作(比方说一个Asp.Net一个),还有在64位平台上工作时,你会做事情的方式的任何差异,相对于工作一个32位平台。编程为64位平台

,因为你正在使用的框架,该框架是照顾大多数事情对你,对我可以想象很少?

但是,请给出您的意见。

谢谢。

回答

2

有两种情况下,考虑到64位岬可能是有趣:

  1. 你需要考虑的是有超过2^31个元素的容器。标准数组.Length属性返回Int32,因此无法表示大数组 - 您无法在32位VM中创建这些数组。在64位虚拟机中,您应该使用LongLength(除非您知道您的元素少于2^31)。不幸的是,许多标准的集合类似乎并不支持大量的元素。
  2. 您可以使用长型约业绩较少的担忧:在64位版本,长装配到寄存器,而在32位版本的JIT代码将需要一个长时间操作多个机器指令。
3

如果你使用p/invoke,那么你需要确保你有64位版本的DLL可用。这不是一个问题,如果你调用MS提供的DLL,如kernel32,因为它们已经在32位和64位平台上得到了相同的名字(奇怪,我知道),所以你的64位应用程序将隐式链接到正确的版。但是,如果您使用的是第三方DLL,并且您的64位应用程序尝试链接到32位DLL,则会得到运行时异常。

这也意味着,如果你在使用过程中的COM对象你有问题。一个64位应用程序可以调用一个32位的进程外COM对象(反之亦然),因为您正在移动一个进程边界,COM将负责为您编组。

除此之外,该框架可以照顾到大多数事情你。你永远不必担心指针大小,并且clr类型具有明确的大小(int总是32位,长总是64位)。在纯粹的.NET世界中,几乎没有什么可担心的。当你开始在沙箱外移动时,你必须更加小心。

相关问题