Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Uma nameof expressão produz o nome de uma variável, tipo ou membro como a constante de cadeia de caracteres. Uma nameof expressão é avaliada em tempo de compilação e não tem efeito em tempo de execução. Quando o operando é um tipo ou um namespace, o nome produzido não é totalmente qualificado.
A referência da linguagem C# documenta a versão mais recentemente lançada da linguagem C#. Contém também documentação inicial para funcionalidades em versões preliminares públicas para a próxima versão da linguagem.
A documentação identifica qualquer funcionalidade introduzida pela primeira vez nas últimas três versões da língua ou em pré-visualizações públicas atuais.
Sugestão
Para saber quando uma funcionalidade foi introduzida pela primeira vez em C#, consulte o artigo sobre o histórico de versões da linguagem C#.
O exemplo seguinte mostra como usar uma nameof expressão:
Console.WriteLine(nameof(System.Collections.Generic)); // output: Generic
Console.WriteLine(nameof(List<int>)); // output: List
Console.WriteLine(nameof(List<>)); // output: List
Console.WriteLine(nameof(List<int>.Count)); // output: Count
Console.WriteLine(nameof(List<int>.Add)); // output: Add
List<int> numbers = new List<int>() { 1, 2, 3 };
Console.WriteLine(nameof(numbers)); // output: numbers
Console.WriteLine(nameof(numbers.Count)); // output: Count
Console.WriteLine(nameof(numbers.Add)); // output: Add
O exemplo anterior que usa List<> é suportado em C# 14 e posteriores. Você pode usar uma nameof expressão para tornar o código de verificação de argumentos mais fácil de manter:
public string Name
{
get => name;
set => name = value ?? throw new ArgumentNullException(nameof(value), $"{nameof(Name)} cannot be null");
}
Pode usar uma nameof expressão com um parâmetro de método dentro de um atributo de um método ou do seu parâmetro. O código a seguir mostra como fazer isso para um atributo em um método, uma função local e o parâmetro de uma expressão lambda:
[ParameterString(nameof(msg))]
public static void Method(string msg)
{
[ParameterString(nameof(T))]
void LocalFunction<T>(T param) { }
var lambdaExpression = ([ParameterString(nameof(aNumber))] int aNumber) => aNumber.ToString();
}
Uma nameof expressão com um parâmetro é útil quando você usa os atributos de análise anuláveis ou o atributo CallerArgumentExpression.
Quando o operando é um identificador literal, o @ caractere não faz parte do nome, como mostra o exemplo a seguir:
var @new = 5;
Console.WriteLine(nameof(@new)); // output: new
Especificação da linguagem C#
Para mais informações, consulte a secção Nomes das expressões da especificação da linguagem C# e a especificação da funcionalidade de âmbito alargadonameof.