Simplemente curioso.Valor de variable no anulable no asignada (C#)
si vas:
string myString;
Su valor es nulo.
Pero si vas:
int myInt;
¿Cuál es el valor de esta variable en C#?
Gracias
David
Simplemente curioso.Valor de variable no anulable no asignada (C#)
si vas:
string myString;
Su valor es nulo.
Pero si vas:
int myInt;
¿Cuál es el valor de esta variable en C#?
Gracias
David
En primer lugar, tenga en cuenta que esto solo se aplica a los campos, no a las variables locales; no se pueden leer hasta que se hayan asignado, al menos dentro de C#. De hecho, el CLR inicializa los marcos de pila en 0 si tiene un conjunto de banderas apropiado, que creo que es por defecto. Sin embargo, rara vez es observable, tienes que pasar por algunos hackers.
El valor predeterminado de int
es 0 - y para cualquier tipo, es esencialmente el valor representado por un patrón de bits lleno de ceros. Para un tipo de valor, esto es equivalente a llamar al constructor sin parámetros, y para un tipo de referencia es nulo.
Básicamente, el CLR limpia la memoria con ceros.
Este es también el valor dado por default(SomeType)
para cualquier tipo.
+1 para proporcionar la mecánica de fondo. – RedFilter
y +1 para la distinción campo/variable – Blorgbeard
Cuando escribí la pregunta quise decir variable local en lugar de campo, pero como no estaba al tanto de la distinción al respecto, no lo dejé claro. No sabía que los campos int se inicializaron en cero, gracias por esa información. – David
por defecto de int es 0
El valor por defecto para int es 0.
Vea aquí para la lista completa de los valores por defecto según el tipo: http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx
Aquí hay una tabla de valores predeterminados para los tipos de valores en C#: http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx El valor predeterminado de los tipos de referencia suele ser nulo.
Cadena es un tipo de referencia. Int es un tipo de valor. Los tipos de referencia son simplemente un puntero en la pila dirigida al montón, que puede contener o no un valor. Un tipo de valor es solo el valor en la pila, pero siempre debe establecerse en algo.
El valor de una variable unitaria del tipo T
siempre es default(T)
. Para todos los tipos de referencia, esto es nulo, y para los tipos de valores, vea el enlace que @Blorgbeard publicó (o escriba algún código para verificarlo).
Una simple prueba sería suficiente para que usted responda esto usted mismo. – spender
Creo que la calidad de las respuestas ha demostrado el valor de la pregunta. – David