Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een nameof
expressie produceert de naam van een variabele, type of lid als de tekenreeksconstante. Een nameof
expressie wordt geëvalueerd tijdens het compileren en heeft geen effect tijdens runtime. Wanneer de operand een type of een naamruimte is, is de geproduceerde naam niet volledig gekwalificeerd. In het volgende voorbeeld ziet u het gebruik van een nameof
expressie:
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
Het voorgaande voorbeeld dat wordt List<>
gebruikt, wordt ondersteund in C# 14 en hoger. U kunt een nameof
expressie gebruiken om de code voor argumentcontrole beter te onderhouden:
public string Name
{
get => name;
set => name = value ?? throw new ArgumentNullException(nameof(value), $"{nameof(Name)} cannot be null");
}
Vanaf C# 11 kunt u een nameof
expressie gebruiken met een methodeparameter in een kenmerk voor een methode of de bijbehorende parameter. De volgende code laat zien hoe u dit doet voor een kenmerk op een methode, een lokale functie en de parameter van een lambda-expressie:
[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();
}
Een nameof
expressie met een parameter is handig wanneer u de nullable-analysekenmerken of het kenmerk CallerArgumentExpression gebruikt.
Wanneer de operand een verbatim-id is, maakt het @
teken geen deel uit van de naam, zoals in het volgende voorbeeld wordt weergegeven:
var @new = 5;
Console.WriteLine(nameof(@new)); // output: new
C#-taalspecificatie
Zie de sectie Nameof-expressies van de C#-taalspecificatie en de specificatie van de C# 11 - Uitgebreide nameof
bereikfunctie voor meer informatie.