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
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
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 ile başlayarak, bir nameof
yöntem veya parametresindeki bir özniteliğin içinde yöntem parametresi olan bir ifade kullanabilirsiniz. Aşağıdaki kod bir yöntem, yerel işlev ve lambda ifadesinin parametresi üzerindeki bir öznitelik için bunun nasıl yapılacağını gösterir:
[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.
İşlenen bir ayrıntılı tanımlayıcı 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
C# dili belirtimi
Daha fazla bilgi için C# dil belirtiminin Nameof ifadeleri bölümüne ve C# 11 - Genişletilmiş nameof
kapsam özellik belirtimine bakın.