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. Existem dois tipos de expressões de valor padrão: a chamada do default operador e um default literal.
Você também usa a default palavra-chave como o rótulo de caso padrão em uma switch instrução.
A linguagem C# faz referência a documentos da versão mais recentemente lançada da linguagem C#. Ele também contém a documentação inicial para funcionalidades em pré-visualizações públicas para o próximo lançamento do idioma.
A documentação identifica qualquer recurso introduzido pela primeira vez nas três últimas versões do idioma ou nas versões prévias públicas atuais.
Dica
Para descobrir quando um recurso foi introduzido pela primeira vez em C#, consulte o artigo sobre o histórico de versão da linguagem C#.
Operador default
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.
default Literal
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#.