naamvan expressie (C#-verwijzing)
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<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
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, is het @
teken niet het deel van een 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.
Zie ook
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar:Feedback verzenden en bekijken voor