2011-11-02 11 views
5

Huh eso es ironic, mientras jugaba hoy me preguntaba si se puede Incrementar Int64.MaxValue de alguna manera, y acaba de fundar que Int64.MaxValue no es un Int64 sino un Long.¿Por qué Int64.MaxValue devuelve un Long?

¿Por qué es eso, significa que si almaceno como Int64 myInt = Int64.MaxValue; que myInt seguirá siendo un Int o se convertirá en un Largo, cuál es el propósito de almacenar un largo en lugar de Int64 en este campo.

+1

Nota al margen: no se puede aumentar o disminuir MaxValue. No limita Int64 (o cualquier otro tipo que tenga MaxValue), es más un indicador de qué tan grande puede ser ese tipo. –

Respuesta

16

Porque Int64 y long son del mismo tipo.

Int64 = long  
Int32 = int  
Int16 = short 
3

long es sólo un alias para Int64. Ver here.

0

Hay Int16, Int32 y Int64 que son alias de short, int, y long respectivamente . Tenga en cuenta que el número es cuántos bits se utilizan para almacenar el valor.

3

De la especificación del lenguaje:

Los miembros de un tipo simple se corresponden directamente con los miembros del tipo struct alias por el tipo simple:

• Los miembros de long son los miembros de la System.Int64 struct.

Puede ver los alias adicionales en §3.4.2.

Y a partir de 4.1.4:

C# proporciona un conjunto de tipos predefinidos llamados struct los tipos simples. Los tipos simples se identifican a través de palabras reservadas, pero estas palabras reservadas son simplemente alias para tipos de estructura predefinidos en el espacio de nombres del sistema, como se describe en la tabla a continuación.

Reserved word Aliased type 
long   System.Int64 
+0

+1 por ser el primero en hacer referencia a la especificación de C#. – vcsjones

Cuestiones relacionadas