2008-11-11 51 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世界中,幾乎沒有什麼可擔心的。當你開始在沙箱外移動時,你必須更加小心。

相關問題