Valores predeterminados de tipos de C# (referencia de C#)
En la tabla siguiente se muestran los valores predeterminados de los tipos de C#:
Tipo | Valor predeterminado |
---|---|
Cualquier tipo de referencia | null |
Cualquier tipo numérico entero integrado | 0 (cero) |
Cualquier tipo numérico de punto flotante integrado | 0 (cero) |
bool | false |
char | '\0' (U+0000) |
enum | Valor generado por la expresión (E)0 , donde E es el identificador de enumeración. |
struct | Valor generado estableciendo todos los campos de tipo de valor en sus valores predeterminados y todos los campos de tipo de referencia en null . |
Cualquier tipo de valor que acepta valores NULL | Una instancia para la cual la propiedad HasValue es false y la propiedad Value no está definida. Este valor predeterminado también se conoce con el valor null de un tipo de valor que acepta valores NULL. |
Expresiones de valor predeterminadas
Use el operador default
para generar el valor predeterminado de un tipo, como se muestra en el ejemplo siguiente:
int a = default(int);
Puede usar el literal default
para inicializar una variable con el valor predeterminado de su tipo:
int a = default;
Constructor sin parámetros de un tipo de valor
Para un tipo de valor, el constructor implícito sin parámetros también genera el valor predeterminado del tipo, como se muestra en el ejemplo siguiente:
var n = new System.Numerics.Complex();
Console.WriteLine(n); // output: (0, 0)
En tiempo de ejecución, si la instancia de System.Type representa un tipo de valor, puede usar el método Activator.CreateInstance(Type) para invocar el constructor sin parámetros para obtener el valor predeterminado del tipo.
Nota
Un tipo de estructura (que es un tipo de valor) puede tener un constructor sin parámetros explícito que pueda generar un valor no predeterminado del tipo. Por lo tanto, se recomienda usar el operador default
o el literal default
para generar el valor predeterminado de un tipo.
Especificación del lenguaje C#
Para obtener más información, consulte las secciones siguientes de la especificación del lenguaje C# :
- Valores predeterminados
- Constructores predeterminados
- Constructores de estructuras sin parámetros
- C# 11: estructuras predeterminadas automáticas