Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wyrażenie nameof tworzy nazwę zmiennej, typu lub elementu członkowskiego jako stałej ciągu. Wyrażenie nameof jest oceniane w czasie kompilacji i nie ma żadnego efektu w czasie wykonywania. Gdy operand jest typem lub przestrzenią nazw, utworzona nazwa nie jest w pełni kwalifikowana.
Dokumentacja języka C# zawiera ostatnio wydaną wersję języka C#. Zawiera również początkową dokumentację dla funkcjonalności w publicznych wersjach testowych nadchodzącego wydania języka.
Dokumentacja identyfikuje dowolną funkcję po raz pierwszy wprowadzoną w ostatnich trzech wersjach języka lub w bieżącej publicznej wersji zapoznawczej.
Wskazówka
Aby dowiedzieć się, kiedy funkcja została po raz pierwszy wprowadzona w języku C#, zapoznaj się z artykułem dotyczącym historii wersji języka C#.
W poniższym przykładzie pokazano, jak używać nameof wyrażenia:
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
Powyższy przykład, który używa List<> , jest obsługiwany w języku C# 14 lub nowszym. Możesz użyć nameof wyrażenia, aby kod sprawdzania argumentów był bardziej konserwowalny:
public string Name
{
get => name;
set => name = value ?? throw new ArgumentNullException(nameof(value), $"{nameof(Name)} cannot be null");
}
Można użyć nameof wyrażenia z parametrem metody wewnątrz atrybutu w metodzie lub jego parametrze. Poniższy kod pokazuje, jak to zrobić dla atrybutu w metodzie, funkcji lokalnej i parametru wyrażenia 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();
}
Wyrażenie nameof z parametrem jest przydatne w przypadku używania atrybutów analizy dopuszczalnej wartości null lub atrybutu CallerArgumentExpression.
Gdy operand jest identyfikatorem dosłownym, @ znak nie jest częścią nazwy, jak pokazano w poniższym przykładzie:
var @new = 5;
Console.WriteLine(nameof(@new)); // output: new
specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz sekcję Nameof expressions (Wyrażenia nazw ) specyfikacji języka C# oraz specyfikację funkcji rozszerzonego nameof zakresu .