Solo publicaré aquí, ya que algunas de las otras publicaciones son ligeramente inexactas en relación con C #.
Correcto: int
es un alias para System.Int32
.
Incorrecto: float
no es un alias para System.Float
, sino paraSystem.Single
Básicamente, int es una palabra clave reservada en el lenguaje de programación C #, y es un alias para el System.Int32
tipo de valor.
Sin embargo, float y Float no son lo mismo, ya que el tipo de sistema correcto para '' float
'' es System.Single. Hay algunos tipos como este que tienen palabras clave reservadas que no parecen coincidir directamente con los nombres de los tipos.
En C # no hay diferencia entre '' int
'' y '' System.Int32
'', o cualquiera de los otros pares o palabras clave / tipos de sistema, excepto cuando se definen enumeraciones. Con las enumeraciones, puede especificar el tamaño de almacenamiento a utilizar y, en este caso, solo puede usar la palabra clave reservada, y no el nombre del tipo de tiempo de ejecución del sistema.
Ya sea que el valor en int se almacene en la pila, en la memoria o como un objeto de pila referenciado, depende del contexto y de cómo lo use.
Esta declaración en un método:
int i;
define una variable i
de tipo System.Int32
, que vive en un registro o en la pila, según las optimizaciones. La misma declaración en un tipo (estructura o clase) define un campo miembro. La misma declaración en una lista de argumentos del método define un parámetro, con las mismas opciones de almacenamiento que para una variable local. (tenga en cuenta que este párrafo no es válido si comienza a introducir métodos iteradores en la mezcla, estas son bestias completamente diferentes)
Para obtener un objeto de montón, puede usar el boxeo:
object o = i;
esto creará una copia en caja de los contenidos de i
en el montón. En IL, puede acceder a los métodos en el objeto de almacenamiento dinámico directamente, pero en C # debe volver a convertirlo en un int, lo que creará otra copia. Por lo tanto, el objeto en el montón no se puede cambiar fácilmente en C # sin crear una nueva copia en caja de un nuevo valor int. (Uf, este párrafo no se lee tan fácilmente).