Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Egy nameof kifejezés egy változó, típus vagy tag nevét állítja elő sztringállandóként. A nameof kifejezés fordításkor lesz kiértékelve, és futásidőben nincs hatása. Ha az operandus típus vagy névtér, a létrehozott név nem teljes értékű.
A C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.
A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.
Jótanács
Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.
Az alábbi példa egy kifejezés használatát nameof mutatja be:
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
Az előző példa, amelyet használ List<> , a C# 14-ben és újabb verzióiban támogatott. Egy kifejezéssel nameof karbantarthatóbbá teheti az argumentum-ellenőrző kódot:
public string Name
{
get => name;
set => name = value ?? throw new ArgumentNullException(nameof(value), $"{nameof(Name)} cannot be null");
}
Egy metódus vagy paraméter nameof belüli metódusparaméterrel rendelkező kifejezést is használhat. Az alábbi kód bemutatja, hogyan lehet ezt megtenni egy metóduson, egy helyi függvényen és egy lambdakifejezés paraméterén:
[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();
}
A nameof paraméterrel rendelkező kifejezések akkor hasznosak, ha a null értékű elemzési attribútumokat vagy a CallerArgumentExpression attribútumot használja.
Ha az operandus szó szerinti azonosító, a @ karakter nem része a névnek, ahogy az alábbi példa is mutatja:
var @new = 5;
Console.WriteLine(nameof(@new)); // output: new
C# nyelvspecifikáció
További információkért tekintse meg a C# nyelv specifikációjánakNévkifejezések szakaszát és a Kiterjesztett nameof hatókör funkció specifikációját.