Valores predeterminados de los 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 | El valor generado al establecer 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 | Instancia para la que 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 predeterminado
Use el operador default
para producir el valor predeterminado de un tipo, como se muestra en el ejemplo siguiente:
int a = default(int);
Puede usar el literaldefault
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 sin parámetros implícito 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 y obtener el valor predeterminado del tipo.
Nota:
En C# 10 y versiones posteriores, un tipo de estructura (que es un tipo de valor) puede tener un constructor sin parámetros explícito que puede generar un valor no predeterminado del tipo. Por 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 más información, vea las secciones siguientes de la Especificación del lenguaje C#:
- Valores predeterminados
- Constructores predeterminados
- C# 10: constructores de structs sin parámetros
- C# 11: structs predeterminados automáticos