Expresión nameof (referencia de C#)
Una expresión nameof genera el nombre de una variable, un tipo o un miembro como constante de cadena:
Console.WriteLine(nameof(System.Collections.Generic)); // output: Generic
Console.WriteLine(nameof(List<int>)); // output: List
Console.WriteLine(nameof(List<int>.Count)); // output: Count
Console.WriteLine(nameof(List<int>.Add)); // output: Add
var 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
Como se muestra en el ejemplo anterior, en el caso de un tipo y un espacio de nombres, el nombre generado no está completo.
En el caso de identificadores textuales, el carácter @ no es parte de un nombre, como se muestra en el ejemplo siguiente:
var @new = 5;
Console.WriteLine(nameof(@new)); // output: new
La expresión nameof se evalúa en tiempo de compilación y no tiene efecto en tiempo de ejecución.
Puede usar una expresión nameof para facilitar el mantenimiento del código de comprobación de argumentos:
public string Name
{
get => name;
set => name = value ?? throw new ArgumentNullException(nameof(value), $"{nameof(Name)} cannot be null");
}
Una expresión nameof está disponible en C# 6 y versiones posteriores.
Especificación del lenguaje C#
Para más información, consulte la sección Expresiones Nameof de la especificación del lenguaje C#.