Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett nameof uttryck genererar namnet på en variabel, typ eller medlem som strängkonstant. Ett nameof uttryck utvärderas vid kompileringstillfället och har ingen effekt vid körning. När operanden är en typ eller ett namnområde är det producerade namnet inte fullständigt kvalificerat. I följande exempel visas användningen av ett nameof uttryck:
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
Föregående exempel som använder List<> stöds i C# 14 och senare. Du kan använda ett nameof uttryck för att göra argumentkontrollkoden mer underhållsbar:
public string Name
{
    get => name;
    set => name = value ?? throw new ArgumentNullException(nameof(value), $"{nameof(Name)} cannot be null");
}
Från och med C# 11 kan du använda ett nameof uttryck med en metodparameter i ett attribut på en metod eller dess parameter. Följande kod visar hur du gör det för ett attribut för en metod, en lokal funktion och parametern för ett lambda-uttryck:
[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();
}
Ett nameof uttryck med en parameter är användbart när du använder attributen  för nullbar analys eller attributet CallerArgumentExpression.
När operand är en @ är tecknet inte en del av namnet, vilket visas i följande exempel:
var @new = 5;
Console.WriteLine(nameof(@new));  // output: new
Språkspecifikation för C#
Mer information finns i avsnittet Namn på uttryck i C#-språkspecifikationen och funktionsspecifikationen  C# 11 – Utökat nameof omfång.