Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.