2009-11-05 16 views
17

Powiel możliwe:
Assuming 32bit intsInt32 vs Int64 vs Int w C#

Więc Czytałem gdzieś, że int równa Int32 w C#. Czy jest to prawda także na maszynach 64-bitowych? Czy powinienem używać int32 tylko po to, aby upewnić się, że nikt w microsoft nie zdecyduje się zmienić rozmiaru int?

+3

http://stackoverflow.com/questions/164643/assuming-32bit-ints – rahul

+0

Zgadzam się. Nie można znaleźć pytania. – Faruz

Odpowiedz

27

int jest aliasem dla Int32

long jest aliasem dla Int64

ich rozmiary nie zmieni się, w ogóle, wystarczy użyć dowolny jeden trzeba użyć.

Korzystanie z nich w kodzie nie jest w żaden sposób związane z 32-bitowych i 64-bitowych maszynach

EDIT: w odniesieniu do uwag o bezpieczeństwo wątku. Oto dobre pytanie i odpowiedzi, które szczegółowo opisują wszelkie problemy, o których musisz wiedzieć. Under C# is Int64 use on a 32 bit processor dangerous

+4

Właściwie wierzę, że jeśli chodzi o synchronizację wątków, stan 32-bitowy i 64-bitowy będzie miał znaczenie, ponieważ odczyt Int64 na 32-bitowym procesorze wymaga 2 operacji przetwarzania, a nie tylko 1, co może być importowane dla bezpieczeństwa wątków. – Ian

+2

@Ian: Atomowość nie jest gwarantowana dla int32 czyta się we wspólnej specyfikacji językowej. –

7

Na obu komputerach 32-bitowych i 64-bitowych:

  • long jest 64-bitowy, to synonim System.Int64.
  • int jest 32-bitowy, jest synonimem dla System.Int32.
2

Po prostu NO. Rodzaje są spójne.

7

Nie musisz się martwić. Numer int to Int32 to 32-bitowa liczba całkowita ze znakiem, która nie ulegnie zmianie, niezależnie od platformy, z której korzystasz.

Zobacz Microsoft C# spec (sekcja 1.3), ECMA C# spec (sekcja 8.2.1) i ECMA CLI spec (rozdział 8.2.2).

2

Integer jest 32 bitowy Długa jest 64 bitowy

Na obu procesorów 32 i 64 bitowych

1

użyłem Int32 w moim pierwszym roku z .NET (wówczas 1,0). W większości robi to dla czytelności międzyjęzykowej, ponieważ Int32 wygląda tak samo w VB jak w C#. Patrząc wstecz, widzę, że ta cała troska była głupia. Używaj rodzimych typów i nie poci tego.