nameof ifadesi (C# başvurusu)

İfade nameof , dize sabiti olarak bir değişkenin, türün veya üyenin adını üretir:

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

Yukarıdaki örnekte gösterildiği gibi, bir tür ve ad alanı söz konusu olduğunda, üretilen ad tam olarak nitelenmez.

Ayrıntılı tanımlayıcılar söz konusu 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

bir nameof ifade derleme zamanında değerlendirilir ve çalışma zamanında hiçbir etkisi yoktur.

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");
}

işlecinin nameof bağımsız değişkeni kapsam içinde olmalıdır. C# 11 ile başlayarak, parametreler ve tür parametreleri işlecin amacına yönelik bir özniteliğin nameof kapsamındadır. Aşağıdaki örnekler bir yöntemin, yerel işlevin ve lambda ifadesinin parametrelerinde kullanıldığını gösterir nameof :

[ParameterString(nameof(msg))]
public static void Method( string msg)
{
    [ParameterString(nameof(param))]
    void LocalFunction(string param) { }

    var lambdaExpression = [ParameterString(nameof(aNumber))] (int aNumber) => aNumber.ToString();

}

nameof Null atanabilir analiz özniteliklerini kullanırken en çok parametrelerde kullanmak yararlı olur.

C# dili belirtimi

Daha fazla bilgi için C# dil belirtimininNameof ifadeleri bölümüne bakın.

Ayrıca bkz.