nameof ifadesi (C# başvurusu)

İfade nameof , dize sabiti olarak bir değişkenin, türün veya üyenin adını üretir. bir nameof ifade derleme zamanında değerlendirilir ve çalışma zamanında hiçbir etkisi yoktur. İşlenen bir tür veya ad alanı olduğunda, üretilen ad tam olarak nitelenmemiştir. Aşağıdaki örnekte bir nameof ifadenin kullanımı gösterilmektedir:

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

var 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

İşlenen bir düz metin tanımlayıcısı olduğunda, @ aşağıdaki örnekte gösterildiği gibi karakter bir adın parçası değildir:

var @new = 5;
Console.WriteLine(nameof(@new));  // output: new

Bağımsız değişken denetimi kodunu daha sürdürülebilir hale getirmek için bir nameof ifade kullanabilirsiniz:

public string Name
{
    get => name;
    set => name = value ?? throw new ArgumentNullException(nameof(value), $"{nameof(Name)} cannot be null");
}

C# 11'le başlayarak, bir nameof yöntemdeki veya parametresindeki bir özniteliğin içinde yöntem parametresi olan bir ifade kullanabilirsiniz. Aşağıdaki kodda bir yöntem, yerel işlev ve lambda ifadesinin parametresi üzerindeki bir öznitelik için bunun nasıl yapıldığını gösterilmektedir:

[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 Parametresi olan bir ifade, null atanabilir analiz özniteliklerini veya CallerArgumentExpression özniteliğini kullandığınızda kullanışlıdır.

C# dili belirtimi

Daha fazla bilgi için C# dil belirtimininNameof ifadeleri bölümüne ve C# 11 - Genişletilmiş nameof kapsam özellik belirtimine bakın.

Ayrıca bkz.