2009-11-05 82 views
17

可能重複:
Assuming 32bit ints的Int32與Int64的與詮釋在C#

所以我讀的地方,INT等於INT32在C#。 在64位機器上也是如此嗎? 我應該使用int32只是爲了確保沒有人在微軟決定改變int的大小?

+3

http://stackoverflow.com/questions/164643/assuming-32bit-ints – rahul 2009-11-05 12:07:48

+0

羅傑說。找不到問題。 – Faruz 2009-11-05 12:10:31

回答

27

intInt32

long的別名是Int64

它們的大小不會改變,在所有的別名,只需使用你需要使用哪一個。

在你的代碼中使用它們不以任何方式與32位和64位機

編輯: 在參考有關線程安全的意見。這是一個很好的問題和答案,詳細說明您需要注意的任何問題。 Under C# is Int64 use on a 32 bit processor dangerous

+4

其實我相信當涉及到線程同步時,32位和64位狀態將很重要,因爲在32位處理器上讀取Int64需要2個處理操作,而不僅僅是1個,這可以導入線程安全。 – Ian 2009-11-05 12:08:41

+2

@Ian:無論是在公共語言規範中,int32讀取都不保證原子性。 – 2009-11-05 12:17:20

7

在兩個32位和64位機器:

  • long是64位,這是爲System.Int64的同義詞。
  • int是32位,它是System.Int32的同義詞。
2

只需NO。類型是一致的。

7

您不必擔心。一個int是一個Int32是一個32位有符號整數,並且不會更改,無論您使用的是哪個平臺。

請參閱Microsoft C# spec(1.3節),ECMA C# spec(第8.2.1節)和ECMA CLI spec(第8.2.2節)。

2

整數爲32位 長爲64位

在32個和64位處理器

1

我用的Int32在我的第一年,.NET(當時1.0)。主要是爲了跨語言可讀性,因爲Int32在VB中看起來與在C#中一樣。回顧過去,我看到這整個關切都很愚蠢。使用本機類型,不要爲此付出汗水。