Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Una expresión nameof genera el nombre de una variable, un tipo o un miembro como constante de cadena. La expresión nameof se evalúa en tiempo de compilación y no tiene efecto en tiempo de ejecución. Cuando el operando es un tipo o un espacio de nombres, el nombre generado no está completo. En el ejemplo siguiente se muestra el uso de una expresión nameof:
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
El ejemplo anterior mediante List<> se admite en C# 14 y versiones posteriores. 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");
}
Puede usar una nameof expresión con un parámetro de método dentro de un atributo en un método o su parámetro. En el código siguiente se muestra cómo hacerlo para un atributo en un método, una función local y el parámetro de una expresión 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();
}
Una expresión nameof con un parámetro es útil cuando se usan los atributos de análisis que admiten valores NULL o el atributo CallerArgumentExpression.
Cuando el operando es un identificador textual, el @ carácter no forma parte del nombre, como se muestra en el ejemplo siguiente:
var @new = 5;
Console.WriteLine(nameof(@new)); // output: new
Especificación del lenguaje C#
Para obtener más información, vea la sección Nameof expressions (Expresiones de nombre) de la especificación del lenguaje C# y la especificación de características de ámbito extendidonameof.