Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una expresión de valor predeterminada genera el valor predeterminado de un tipo. Existen dos tipos de expresiones de valor predeterminadas: la llamada de default operador y un default literal.
También se usa la default palabra clave como etiqueta de mayúsculas y minúsculas predeterminada dentro de una switch instrucción .
La documentación de referencia del lenguaje C# cubre la versión más reciente publicada del lenguaje C#. También contiene documentación inicial sobre las características de las versiones preliminares públicas de la próxima versión del lenguaje.
La documentación identifica cualquier característica introducida por primera vez en las últimas tres versiones del idioma o en las versiones preliminares públicas actuales.
Sugerencia
Para buscar cuándo se introdujo por primera vez una característica en C#, consulte el artículo sobre el historial de versiones del lenguaje C#.
default operador
El argumento del operador default debe ser el nombre de un tipo o un parámetro de tipo, como se muestra en el ejemplo siguiente:
Console.WriteLine(default(int)); // output: 0
Console.WriteLine(default(object) is null); // output: True
void DisplayDefaultOf<T>()
{
var val = default(T);
Console.WriteLine($"Default value of {typeof(T)} is {(val == null ? "null" : val.ToString())}.");
}
DisplayDefaultOf<int?>();
DisplayDefaultOf<System.Numerics.Complex>();
DisplayDefaultOf<System.Collections.Generic.List<int>>();
// Output:
// Default value of System.Nullable`1[System.Int32] is null.
// Default value of System.Numerics.Complex is (0, 0).
// Default value of System.Collections.Generic.List`1[System.Int32] is null.
default literal
Puede usar el default literal para generar el valor predeterminado de un tipo cuando el compilador puede deducir el tipo de expresión. La default expresión literal genera el mismo valor que la default(T) expresión donde T es el tipo inferido. Puede usar el default literal en cualquiera de los casos siguientes:
- En la asignación o inicialización de una variable.
- En la declaración del valor predeterminado para un parámetro de método opcional.
- En una llamada al método para proporcionar un valor de argumento.
- En una
returninstrucción o como expresión en un miembro con forma de expresión.
En el ejemplo siguiente se muestra el uso del default literal:
T[] InitializeArray<T>(int length, T initialValue = default)
{
if (length < 0)
{
throw new ArgumentOutOfRangeException(nameof(length), "Array length must be nonnegative.");
}
var array = new T[length];
for (var i = 0; i < length; i++)
{
array[i] = initialValue;
}
return array;
}
void Display<T>(T[] values) => Console.WriteLine($"[ {string.Join(", ", values)} ]");
Display(InitializeArray<int>(3)); // output: [ 0, 0, 0 ]
Display(InitializeArray<bool>(4, default)); // output: [ False, False, False, False ]
System.Numerics.Complex fillValue = default;
Display(InitializeArray(3, fillValue)); // output: [ (0, 0), (0, 0), (0, 0) ]
Sugerencia
Use la regla de estilo de .NET IDE0034 para especificar una preferencia sobre el uso del literal en el default código base.
Especificación del lenguaje C#
Para obtener más información, consulte la sección Expresiones de valor predeterminadas de la especificación del lenguaje C#.