2009-11-05 77 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#中一样。回顾过去,我看到这整个关切都很愚蠢。使用本机类型,不要为此付出汗水。