Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
nameof Выражение создает имя переменной, типа или элемента в виде строковой константы. Значение выражения nameof вычисляется во время компиляции, и это не влияет на время выполнения. Если операнд является типом или пространством имен, создаваемое имя не является полным.
Справочные документы по языку C# описывают последнюю выпущенную версию языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.
Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.
Подсказка
Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей об истории версий языка C#.
В следующем примере показано, как использовать 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
Приведенный выше пример, который используется List<> , поддерживается в C# 14 и более поздних версиях. С помощью выражения nameof можно сделать код проверки аргументов более удобным:
public string Name
{
get => name;
set => name = value ?? throw new ArgumentNullException(nameof(value), $"{nameof(Name)} cannot be null");
}
Выражение можно использовать nameof с параметром метода внутри атрибута в методе или его параметре. В следующем коде показано, как это сделать для атрибута метода, локальной функции и параметра лямбда-выражения.
[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();
}
Выражение nameof с параметром полезно использовать при использовании атрибутов анализа, допускающих значение NULL, или атрибута CallerArgumentExpression.
Если операнд является подробным идентификатором, @ символ не является частью имени, как показано в следующем примере:
var @new = 5;
Console.WriteLine(nameof(@new)); // output: new
Спецификация языка C#
Дополнительные сведения см. в разделе "Выражения Nameof"спецификации языка C# и nameof спецификации расширенных областей.