Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma expressão de valor padrão produz o valor padrão de um tipo. Há dois tipos de expressões de valor padrão: a chamada de operador padrão e um literal padrão.
Você também usa a default palavra-chave como o rótulo de caso padrão em uma switch instrução.
operador padrão
O argumento do operador default deve ser o nome de um tipo ou um parâmetro de tipo, como mostra o exemplo a seguir:
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.
literal padrão
Você pode usar o default literal para produzir o valor padrão de um tipo quando o compilador pode inferir o tipo de expressão. A default expressão literal produz o mesmo valor que a default(T) expressão em que T está o tipo inferido. Você pode usar o default literal em qualquer um dos seguintes casos:
- Na atribuição ou inicialização de uma variável.
- Na declaração do valor padrão para um parâmetro de método opcional.
- Em uma chamada de método para fornecer um valor de argumento.
- Em uma
returninstrução ou como uma expressão em um membro com corpo de expressão.
O exemplo a seguir mostra o uso do 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) ]
Dica
Use a regra de estilo do .NET IDE0034 para especificar uma preferência sobre o uso do default literal em sua base de código.
Especificação da linguagem C#
Para obter mais informações, consulte a seção Expressões de valor padrão da especificação da linguagem C#.