2008-09-15 18 views
319

En C#, int y Int32 son lo mismo, pero he leído varias veces que se prefiere int a sin ninguna razón. ¿Hay alguna razón, y debería importarme?Debo utilizar int o Int32

+6

Publicado por Skeet sobre esto: http://blogs.msdn.com/csharpfaq/archive/2004/03/12/88418.aspx – jjnguy

+0

[Tweet] (http://twitter.com/jonskeet/status/ 37210420196409344) por parte de Skeet acerca de esto, donde favorece a Int32 sobre int al programar las API. – comecme

+0

@JohnBubriski: y no olvidemos que requiere menos instrucciones de uso para usarlo (o estaría escribiendo 'System.Int32') – sehe

Respuesta

112

ECMA-334:. 2006 C# Language Specification (p18):

Cada uno de los tipos predefinidos es una abreviatura de un tipo proporcionado por el sistema. Por ejemplo, la palabra clave int se refiere a la estructura System.Int32. Como cuestión de estilo, se prefiere el uso de la palabra clave sobre el uso del tipo de sistema completo nombre.

2

No debería importarle. Si el tamaño es una preocupación, usaría byte, corto, int, luego largo. La única razón por la que usaría un int mayor que int32 es si necesita un número superior a 2147483647 o inferior a -2147483648.

Aparte de eso, no me importaría, hay muchos otros artículos con los que preocuparse.

+0

Agregaría que puede usar la palabra clave "long" en lugar de System.Int64 – Keith

+22

Ha entendido mal la pregunta. El OP pregunta si hay una diferencia entre las declaraciones "int i" e "Int32 i". – raven

+2

No responde la pregunta que recibió upvotes y es wiki de la comunidad. – Jack

5

Sé que la mejor práctica es usar int, y todo el código de MSDN usa int. Sin embargo, hasta donde yo sé, no hay una razón más allá de la estandarización y la coherencia.

255

Los dos son sin duda; int será un poco más familiar, Int32 hace que los 32 bits sean más explícitos para quienes leen su código. Me inclinaría a usar int donde solo necesito 'un número entero', Int32 donde el tamaño es importante (código criptográfico, estructuras) para que los futuros mantenedores sepan que es seguro ampliar un int si corresponde, pero deben tener cuidado cambiando Int32 s en de la misma manera.

El código resultante será idéntico: la diferencia es puramente de legibilidad o apariencia de código.

+59

Las personas que leen su código deben saber que int es un alias para System.Int32. En lo que respecta a la legibilidad, la coherencia es mucho más importante. –

+10

Para aquellos de ustedes con la antigua mentalidad de C++, IntPtr está diseñado para ser de 32 bits en un sistema operativo de 32 bits y 64 bits en un sistema operativo de 64 bits. Este comportamiento se menciona específicamente en su etiqueta de resumen. http://msdn.microsoft.com/en-us/library/system.intptr(VS.71).aspx – diadem

9

No hay ninguna diferencia entre int y Int32, sino como int es una palabra clave lenguaje muchas personas prefieren estilísticamente (al igual que con string vs String).

2

int y Int32 es lo mismo. int es un alias para Int32.

+0

int no es un alias, es una palabra clave. Ver las otras respuestas – Timores

+0

int es definitivamente una palabra clave para el lenguaje, pero también se puede llamar un alias de System.Int32. Además, otra forma de pensar en esto es que tiene 'usando int = System.Int32;' \t directiva para todos sus archivos de código fuente. –

7

En mi experiencia ha sido algo de convención. No tengo conocimiento de ninguna razón técnica para utilizar int sobre Int32, pero es:

  1. Más rápido para escribir.
  2. Más familiar para el desarrollador típico de C#.
  3. Un color diferente en el resaltado de sintaxis visual de estudio predeterminado.

Me gusta especialmente este último. :)

+3

+1 para favorecer la legibilidad sobre cuestiones altamente teóricas. –

+7

Interesante - # 3 es un punto negativo masivo para mí! – MattDavey

11

Como ya se dijo, int = Int32. Para estar seguro, asegúrese de utilizar siempre int.MinValue/int.MaxValue al implementar cualquier cosa que se preocupe por los límites del tipo de datos. Supongamos .NET decidió que int ahora sería Int64, su código sería menos dependiente de los límites.

+0

Guau, me gusta esto :) – David

+7

@spoulson: Error de comentario en la línea 1: asignación prohibida entre tipos iguales. Sí, una mala broma. –

+21

Si la especificación C# (es una decisión C#, no .NET) alguna vez decidió cambiar para hacer 'int' 64 bits, eso sería * tal * un cambio brusco que no creo que sea posible (o ciertamente sensato) para código defensivo contra tales eventualidades. –

3

int es lo mismo que System.Int32 y cuando se compila se convertirá en lo mismo en CIL.

Utilizamos int por convención en C# C# ya quiere parecerse a C y C++ (y Java) y que es lo que usamos allí ...

Por cierto, yo no las usamos System.Int32 al declarar importaciones de varias funciones de la API de Windows.No estoy seguro de si esto es una convención definida o no, pero me recuerda que voy a una DLL externa ...

-1

Los bytes int pueden contener depende de para qué lo compiló, así que cuando compila su programa para procesadores de 32 bits, contiene números de 2^32/2 a -2^32/2 + 1, mientras que compilado para 64 bits puede contener de 2^64/2 a -2^64/2 + 1. int32 siempre tendrá 2^32 valores.

Editar: Ignore mi respuesta, No vi C#. Mi respuesta fue para C y C++. Nunca utilicé C#

2

No hace ninguna diferencia en la práctica y con el tiempo adoptará su propia convención. Tiendo a utilizar la palabra clave cuando se asigna un tipo, y la versión de clase cuando se usan métodos estáticos y similares:

int total = Int32.Parse ("1009");

0

No debería importarle la mayoría de los lenguajes de programación, a menos que necesite escribir funciones matemáticas muy específicas o código optimizado para una arquitectura específica ... Solo asegúrese de que el tamaño del tipo sea suficiente para usted (utilice algo más grande que un int. si sabe necesitará más de 32 bits, por ejemplo)

19

int es una palabra clave C# y no es ambigua.

mayoría de las veces no importa pero hay dos cosas que van en contra Int32:

  • Usted necesita tener un "using System;" declaración. usar "int" no requiere ninguna instrucción de uso.
  • Es posible definir su propia clase llamada Int32 (que sería tonto y confuso). int siempre significa int.
+0

También es posible crear su propia clase 'var', pero eso no desanima a las personas a usarla. – Neme

0

No importa. int es la palabra clave del lenguaje e Int32 su tipo de sistema real.

Consulte también mi answer here a una pregunta relacionada.

3

Érase una vez, el tipo de datos int estaba vinculado al tamaño de registro de la máquina dirigida por el compilador. Entonces, por ejemplo, un compilador para un sistema de 16 bits usaría un entero de 16 bits.

Sin embargo, afortunadamente no vemos mucho más de 16 bits, y cuando 64-bit comenzó a ser popular, la gente estaba más preocupada por hacerla compatible con un software anterior y 32-bit había existido por tanto tiempo que por se asume que la mayoría de los compiladores int son 32 bits.

3

int es de acceso directo de C# de idioma para System.Int32

Si bien esto no significa que Microsoft podría cambiar esta asignación, un puesto en las discusiones de FogCreek declaró [source]

"Sobre la cuestión de 64 bits - Microsoft está de hecho trabajando en una versión de 64 bits de .NET Framework, pero estoy bastante seguro int NO se proyectará en 64 bits en ese sistema

razones:.

1. La norma C# ECMA dice específicamente que int es de 32 bits y long es de 64 bits.

2. Microsoft introdujo propiedades adicionales & métodos en Framework versión 1.1 que devuelven valores largos en lugar de valores int, tales como Array.GetLongLength además de Array.GetLength.

así que creo que es seguro decir que todos los tipos predefinidos de C# mantendrá su asignación actual "

+0

Si se introduce una versión de 64 bits, probablemente agregarán 'nativeint' a C# (como se usa actualmente en F #).¡Esto solo refuerza que introducir el 'int' y definir esto como un Int32 fue un error! Y tan inconsistente desde un punto de vista API (es decir, ReadInt32 no ReadInt), color (oscuro frente a azul claro) y sensibilidad a mayúsculas y minúsculas (DateTime vs int). es decir, ¿por qué el valor tipo 'DateTime' no tiene un alias como Int32? –

83

Ambos declaran enteros de 32 bits, y como otros afiches indicaron, cuál usar es principalmente una cuestión de estilo sintáctico. Sin embargo, no siempre se comportan de la misma manera. Por ejemplo, el compilador de C# no permitirá que esto:

public enum MyEnum : Int32 
{ 
    member1 = 0 
} 

pero permitirá a esto:

public enum MyEnum : int 
{ 
    member1 = 0 
} 

Ir figura.

+0

jaja, me he encontrado con eso también. No tiene mucho sentido para mí – Marlon

+9

Si utiliza Reflector para examinar el tipo System.Int32, encontrará que es una estructura y no una clase. El código es el siguiente: [Serializable, StructLayout (LayoutKind.Sequential), ComVisible (true)] estructura pública Int32: IComparable, IFormattable, IConvertible, IComparable , IEquatable { public const int MaxValue = 0x7fffffff; ... No se puede derivar un tipo de una estructura. Como mínimo, recibirá un error que así lo indica. Sin embargo, el comportamiento de la enumeración es un poco diferente, que comentaré a continuación. – raddevus

+14

La incapacidad de derivar una enumeración del Int32 es un comportamiento diseñado, que también se puede ver mirando el código .NET: [Serializable, ComVisible (true)] clase abstracta pública Enum: ValueType, IComparable, IFormattable, Observe que Enum es derivado de ValueType? Si intenta derivar una enumeración de otra cosa además de un tipo de datos intrínsecos (int, byte, etc.), recibirá un error que se parece a lo siguiente: Tipo byte, sbyte, short, ushort, int, uint, long o ulong expected . – raddevus

1

Utilizo int en el caso de que Microsoft cambie la implementación predeterminada para un entero a alguna nueva versión fangled (llamémoslo Int32b).

Microsoft puede cambiar el alias int a Int32b, y no tengo que cambiar ninguno de mis códigos para aprovechar su nueva (y afortunadamente mejorada) implementación entera.

Lo mismo ocurre con las palabras clave de tipo.

9

El tamaño de bytes para los tipos no es demasiado interesante cuando solo tiene que tratar con un solo idioma (y para el código que no tiene que recordarse a sí mismo sobre los desbordamientos matemáticos). La parte que se vuelve interesante es cuando haces un puente entre un idioma, otro C a un objeto COM, etc., o estás haciendo un cambio de bits o enmascaramiento y necesitas recordarte a ti mismo (y a tus compañeros de revisión de códigos) del tamaño de los datos.

En la práctica, generalmente uso Int32 solo para recordarme a mí mismo qué tamaño tienen porque escribo C++ administrado (para pasar de C# por ejemplo) y C++ no administrado/nativo.

Long como usted probablemente sabe, en C# es de 64 bits, pero en C++ nativo, termina en 32 bits, o char es unicode/16 bits, mientras que en C++ es de 8 bits. Pero, ¿cómo sabemos esto? La respuesta es, porque lo buscamos en el manual y lo dice.

Con el tiempo y las experiencias, empezará a ser más escrupuloso cuando escriba códigos para establecer un puente entre C# y otros idiomas (algunos lectores piensan "¿por qué lo haría?"), Pero en mi humilde opinión, creo una mejor práctica porque no puedo recordar lo que he codificado la semana pasada (o no tengo que especificar en mi documento API que "este parámetro es un entero de 32 bits").

En F# (aunque nunca he usado), que definen int, int32 y nativeint. La misma pregunta debería surgir, "¿cuál uso?". Como otros han mencionado, en la mayoría de los casos, no debería importar (debería ser transparente). Pero, por mi parte, elegiría int32 y uint32 solo para eliminar las ambigüedades.

Supongo que solo dependerá de qué aplicaciones está codificando, quién lo está usando, qué prácticas de codificación siguen usted y su equipo, etc. para justificar cuándo usar Int32.

+0

¿Eso no invalida el propósito de .net? Lo que es F # de todos modos, una idea que Gates tenía que se fue con su retiro ... –

0

Utilizando el tipo Int32 requiere una referencia de espacio de nombres para System, o calificar completamente (System.Int32). Tiendo hacia int, porque no requiere una importación de espacio de nombre, por lo tanto, la posibilidad de colisión del espacio de nombres en algunos casos se reduce. Cuando se compila en IL, no hay diferencia entre los dos.

0

Considera también Int16. Si necesita almacenar un entero en la memoria de su aplicación y le preocupa la cantidad de memoria utilizada, entonces podría elegir Int16 ya que utiliza menos memoria y tiene un rango min/max más pequeño que Int32 (que es lo que int es .)

47

Siempre utilizo los tipos de sistema, por ejemplo, Int32 en lugar de int. Adopté esta práctica después de leer Applied .NET Framework Programming - autor Jeffrey Richter hace un buen caso para usar los nombres de tipo completo. Estos son los dos puntos que se me quedó grabada:

  1. nombres de tipos pueden variar entre los lenguajes .NET. Por ejemplo, en C#, long se asigna a System.Int64 mientras que en C++ con extensiones administradas, long se asigna a Int32. Dado que los idiomas se pueden mezclar y combinar al usar .NET, puede estar seguro de que el uso del nombre de clase explícito siempre será más claro, sin importar el idioma preferido del lector.

  2. Muchos métodos marco tienen nombres de tipos como parte de sus nombres de método:

    BinaryReader br = new BinaryReader(/* ... */);

    float val = br.ReadSingle(); // OK, but it looks a little odd...

    Single val = br.ReadSingle(); // OK, and is easier to read

+37

¡Bah! var val = br.ReadSingle(); // ¡Lo más fácil de leer! ¡Yo pienso! :) –

+1

Nunca pensé que esto fuera un obstáculo para C++ ... ¡Me siento cómodo con C#/.Net pero comentarios como estos son geniales e importantes de saber! ¡Respuesta impresionante y gracias por la información compartida! – KDT

4

Usted no debe preocuparse. Debe usar int la mayor parte del tiempo. Ayudará a trasladar su programa a una arquitectura más amplia en el futuro (actualmente, int es un alias de System.Int32, pero eso podría cambiar). Solo cuando el ancho del bit de la variable importa (por ejemplo: para controlar el diseño en la memoria de un struct) debe usar int32 y otros (con el "using System;" asociado).

+1

No se puede hablar en serio ... ¿es más fácil portar? No creo que encontrar y reemplazar sea un gran problema. –

+2

_ (actualmente int es un alias de System.Int32 pero eso podría cambiar) _? Oh, vamos uno ... ¿Hablas en serio? – Oybek

+0

¿Por qué escribirías el código en un idioma que finalmente desees? Parece que por decisión de la gerencia. Use int o Int32. Int32 se parece a VB –

0

Hace un tiempo que estaba trabajando en un proyecto con Microsoft cuando recibimos la visita de alguien del equipo de producto Microsoft .NET CLR. Esta persona codificó ejemplos y cuando definió sus variables usó "Int32" frente a "int" y "String" frente a "cadena".

Recordé haber visto este estilo en otro código de ejemplo de Microsoft. Entonces, investigué un poco y descubrí que todos dicen que no hay diferencia entre "Int32" e "int" a excepción de la coloración de sintaxis. De hecho, encontré un montón de material que sugiere que use "Int32" para hacer que su código sea más legible. Entonces, adopté el estilo.

¡El otro día encontré la diferencia! El compilador no le permite escribir enum usando "Int32", pero sí cuando usa "int". No me preguntes por qué porque aún no lo sé.

Ejemplo:

public enum MyEnum : Int32 
{ 
    AEnum = 0 
} 

Esto funciona.

public enum MyEnum : int 
{ 
    AEnum = 0 
} 

Tomado de: Int32 notation vs. int

-4

Recuerdo los viejos tiempos de Borland y int no sólo dependía de su máquina, pero en su compilador. Entonces, el verdadero punto aquí es: si eres un codificador descuidado, utiliza lo que sea y continúa siendo de esa manera.

Si le preocupa la administración de memoria, entonces considere por qué C# es un lenguaje fuertemente tipado y que tiene int32, int64 e int16 por algún motivo.

Considera:

for (int i=0; i<100; i++) { } 

y

for (Int16 i=0; i<100; i++) { } 

y

for (Int64 i=0; i<100; i++) { } 

¿Cuál de estos es el más eficiente? Int16! Podría argumentar que en el CIL son lo mismo, pero ¿qué pasa si tiene la función de llamada enhebrada 1000 veces? Eso ya es 4   kB (sic) de memoria que está desperdiciando SÓLO ALLÍ.

Los programadores reales usarían la designación más pequeña a pesar de que posiblemente no sea diferente porque semánticamente es más correcto y podría en algún futuro compilar. El resto de tus aficionados pueden seguir sin preocuparte por los detalles, y tu código apestará porque no te preocupas por él. Es como una planta libre. ¡Quiéralo! No seas descuidado!

+0

¿Podría haber una base para la afirmación de que Int16 es más eficiente en .NET? Tengo mis dudas. – spoulson

+0

En una base de datos, estoy totalmente de acuerdo con el uso del tipo de datos más pequeño que * definitivamente * tendrá un valor razonable. Pero en la mayoría de las aplicaciones, esperaría que la mayoría de las operaciones más pequeñas que un registro se rellena de todos modos. A menos que la cantidad de datos sea enorme, no suponga que una unidad más pequeña es más rápida. –

+1

Depende de cómo defina "eficiente". A menos que use una máquina de 16 bits por algún motivo, usar una int de 32 bits en una máquina de 32 bits siempre será más eficiente en el tiempo. En cuanto a su argumento acerca de enhebrar 1000 veces, es un ejemplo bastante estúpido. Los "programadores reales" decidirían por sí mismos si existe alguna razón para considerar la eficiencia del tiempo/memoria al escribir el código. Tal vez deberías considerar tu propio conocimiento de programación antes de implicar que los demás son aficionados.Tengo 4 kb de memoria de sobra, pero mi tiempo es precioso. –

5

Aunque son (la mayoría) idénticas (ver a continuación la diferencia de [error]), definitivamente debes preocuparte y deberías usar Int32.

  • El nombre de un entero de 16 bits es Int16. Para un entero de 64 bits es Int64, y para un entero de 32 bits, la opción más intuitiva es: int o Int32?

  • La cuestión del tamaño de una variable de tipo Int16, Int32 o Int64 es autorreferencial, pero la cuestión del tamaño de una variable de tipo int es una pregunta y preguntas perfectamente válidas, sin importar cuán triviales , distraen, generan confusión, pierden tiempo, dificultan la discusión, etc. (el hecho de que esta pregunta exista demuestra el punto).

  • El uso de Int32 promueve que el desarrollador sea consciente de su elección del tipo. ¿Qué tan grande es una int otra vez? Oh sí, 32. La probabilidad de que el tamaño del tipo realmente se considere es mayor cuando el tamaño está incluido en el nombre.El uso de Int32 también promueve el conocimiento de las otras opciones. Cuando las personas no están obligadas a reconocer al menos que hay alternativas, se vuelve demasiado fácil para que int se convierta en "EL tipo de entero".

  • La clase dentro del marco destinado a interactuar con enteros de 32 bits se denomina Int32. Una vez más, que es: más intuitivo, menos confuso, carece de una traducción (innecesaria) (no una traducción en el sistema, sino en la mente del desarrollador), etc. int lMax = Int32.MaxValue o Int32 lMax = Int32.MaxValue?

  • int no es una palabra clave en todos los idiomas .NET.

  • Aunque hay argumentos por los que no es probable que alguna vez cambie, int puede no ser siempre un Int32.

Los inconvenientes son dos caracteres adicionales para escribir y [error].

Esto no va a compilar

public enum MyEnum : Int32 
{ 
    AEnum = 0 
} 

pero esto:

public enum MyEnum : int 
{ 
    AEnum = 0 
} 
+0

Usted dice "El nombre para un entero de 16 bits es Int16, para un entero de 64 bits es Int64, y para un entero de 32 bits la opción intuitiva es: int o Int32?", Pero también hay palabras clave C# para estos. Int16 = corto Int64 = largo El punto uno de su respuesta se basa en una suposición incorrecta. – Mel

+0

"variable de tipo int es una pregunta y preguntas perfectamente válidas, sin importar cuán triviales sean, distraen, generan confusión, pierden tiempo, dificultan la discusión, etc. (el hecho de que esta pregunta exista demuestra el punto)". ¿Me estás tomando el pelo? Trabajas en un lenguaje que no entiendes completamente de lo que hay detrás del capó. Si el desarrollador no comprende lo que equivale al tipo primitivo, debería ocupar las artes culinarias. Parece un desarrollador de VB. el uso de primitivas es nativo de cualquier idioma y debe ser preferido. Está bien si no te gustan los primitivos, pero no inventas realidades. –

+0

Hmm, estoy totalmente en desacuerdo con su opinión de que me debería importar ... pero no sabía que las enumeraciones solo pueden heredar de las palabras clave. Un hecho bastante inútil, pero aún divertido de saber :) – Jowen

0

El uso de Int o Int32 son los mismos Int es sólo azúcar para simplificar el código para el lector.

Utilice la variante Nullable Int? o Int32? cuando trabajas con bases de datos en campos que contienen null. Eso le ahorrará muchos problemas de tiempo de ejecución.

0

Algunos compiladores tienen diferentes tamaños para int en diferentes plataformas (no C# específico)

Algunas normas de codificación (MISRA C) requiere que todos los tipos utilizados son tamaño especificado (es decir Int32 y no int).

También es bueno para especificar prefijos para diferentes variables de tipo (por ejemplo B para byte de 8 bits, w de palabra de 16 bits, y l para 32 bits de longitud palabra => Int32 lMyVariable)

Usted debe cuidar porque hace que su código sea más portátil y más fácil de mantener.

Portátil puede no ser aplicable a C# si siempre va a utilizar C# y la especificación de C# nunca cambiará en este sentido.

IHMO Mantenible será siempre el caso, ya que la persona que mantiene su código puede no ser consciente de esta especificación particular, C#, y se pierda un error fueron los int se convierte ocasionalmente más de 2147483647.

En un simple bucle de eso cuenta, por ejemplo, los meses del año, no te importará, pero cuando usas la variable en un contexto en el que posiblemente fluya, deberías preocuparte.

También debería importarle si va a realizar operaciones de bits en él.

+0

No hace la diferencia en .Net - int es siempre Int32 y siempre es Int64 – Keith

+0

hice una edición. ¿Tiene más sentido ahora? – user11211

3

siempre uso los tipos de alias (int, string, etc.) cuando se define una variable y utilizar el nombre real cuando se accede a un método estático:

int x, y; 
... 
String.Format ("{0}x{1}", x, y); 

Sólo parece feo para ver algo como int. TryParse(). No hay otra razón por la que hago esto aparte del estilo.

2

Recomendaría usar StyleCop de Microsoft.

Es como FxCop, pero por cuestiones relacionadas con el estilo. La configuración predeterminada coincide con las guías de estilo internas de Microsoft, pero se puede personalizar para su proyecto.

Puede tomar un tiempo acostumbrarse, pero definitivamente hace que su código sea más agradable.

Puede incluirlo en su proceso de compilación para detectar violaciones automáticamente.

+0

Estoy completamente en desacuerdo con StyleCop en este caso. sí, está bien, pero prefiero usar Int32, ¿por qué? como para evitar respuestas como las dos downvoted. La gente confunde Int32 con cómo se representan los ints en C –

-11

No es una buena práctica usar int en lugar de Int32 ya que muchas de las respuestas dicen, pero hay una buena razón para eso. Int32 es siempre de 32 bits, int es de 32 bits en el sistema 32x y 64 en el sistema de 64x.

+5

Eso no es cierto. int es un alias para System.Int32 en ambos sistemas de 32 bits y 64 bits. Consulte la Especificación del lenguaje C#, sección 4.1.4 "Tipos simples". –

+0

No confunda x86 y x64 y la forma en que interpretan los tipos. Esta es una sección de una respuesta anterior (@Remi Despres-Smyth) que me atrapó y que me haría preferir Int32 e Int64 en int y long: Comentario citado: "Los nombres de tipos pueden variar entre los lenguajes .Net. Por ejemplo, en C# , mapas largos a System.Int64 en C++ con extensiones administradas, mapas largos a Int32 ". – KDT

+0

esto es un error común con los desarrolladores de C/C++. No es lo mismo con C# –

0

Según la ventana Inmediato en Visual Studio 2012 Int32 es int, Int64 es largo. Aquí está la salida:

sizeof(int) 
4 
sizeof(Int32) 
4 
sizeof(Int64) 
8 
Int32 
int 
    base {System.ValueType}: System.ValueType 
    MaxValue: 2147483647 
    MinValue: -2147483648 
Int64 
long 
    base {System.ValueType}: System.ValueType 
    MaxValue: 9223372036854775807 
    MinValue: -9223372036854775808 
int 
int 
    base {System.ValueType}: System.ValueType 
    MaxValue: 2147483647 
    MinValue: -2147483648 
-9

En una plataforma x86 Int == Int32. Pero en x64 Int == Int64.

+1

Para el registro, esta respuesta es downvoted porque está mal. Vea aquí: http://stackoverflow.com/q/164643/195651 – sunside

Cuestiones relacionadas