Bagikan melalui


ekspresi nameof (referensi C#)

nameof Ekspresi menghasilkan nama variabel, jenis, atau anggota sebagai konstanta string. Ekspresi nameof dievaluasi pada waktu kompilasi, dan tidak berpengaruh pada durasi. Ketika operand adalah jenis atau namespace, nama yang dihasilkan tidak sepenuhnya memenuhi syarat.

Referensi bahasa C# mendokumentasikan versi bahasa C# yang paling baru dirilis. Ini juga berisi dokumentasi awal untuk fitur dalam pratinjau publik untuk rilis bahasa yang akan datang.

Dokumentasi mengidentifikasi fitur apa pun yang pertama kali diperkenalkan dalam tiga versi terakhir bahasa atau dalam pratinjau publik saat ini.

Petunjuk / Saran

Untuk menemukan kapan fitur pertama kali diperkenalkan di C#, lihat artikel tentang riwayat versi bahasa C#.

Contoh berikut menunjukkan cara menggunakan nameof ekspresi:

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

Contoh sebelumnya yang menggunakan List<> didukung di C# 14 dan yang lebih baru. Anda dapat menggunakan ekspresi nameof untuk membuat kode pemeriksaan argumen lebih dapat dipertahankan:

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

Anda dapat menggunakan nameof ekspresi dengan parameter metode di dalam atribut pada metode atau parameternya. Kode berikut menunjukkan cara melakukannya untuk atribut pada metode, fungsi lokal, dan parameter ekspresi lambda:

[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();
}

Ekspresi nameof dengan parameter berguna saat Anda menggunakan atribut analisis nullable atau atribut CallerArgumentExpression.

Saat operan adalah pengidentifikasi verbatim, @ karakter bukan bagian dari nama, seperti yang ditunjukkan contoh berikut:

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

Spesifikasi bahasa C#

Untuk informasi selengkapnya, lihat bagian Ekspresi nameof dari spesifikasi bahasa C#, dan spesifikasi fitur Cakupan yang diperluasnameof.

Lihat juga