Mendapatkan Nama Pembolehubah dengan Refleksi
Dalam C#, pembolehubah mungkin kelihatan tanpa nama dalam kod Bahasa Perantaraan (IL) yang disusun. Walau bagaimanapun, kami boleh menggunakan teknik pantulan untuk mendapatkan semula nama pembolehubah dengan memanfaatkan pepohon ekspresi.
Pertimbangkan contoh berikut:
var someVar = 3; Console.WriteLine(GetVariableName(someVar));
Matlamat kami adalah untuk mengeluarkan "someVar".
Menggunakan Pokok Ekspresi
Refleksi tidak memberikan akses terus kepada nama berubah-ubah. Sebaliknya, kita boleh menggunakan pepohon ekspresi untuk membuat penutupan yang mempromosikan pembolehubah kepada skop bernama. Kaedah berikut mencapai ini:
public static string GetVariableName<T>(Expression<Func<T>> expr) { var body = (MemberExpression)expr.Body; return body.Member.Name; }
Untuk menggunakan kaedah ini, kami membungkus pembolehubah dalam ungkapan lambda:
Console.WriteLine(GetVariableName(() => someVar));
Nota: Pendekatan ini disertakan dengan overhed prestasi kerana penciptaan objek dan penggunaan pantulan berat.
C# 6.0 Alternatif
Dengan C# 6.0, nama kata kunci memudahkan proses ini:
Console.WriteLine(nameof(someVar));
Nama kata kunci menyediakan cara langsung dan ringan untuk mendapatkan semula nama pembolehubah tanpa implikasi prestasi ungkapan kaedah pokok.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Pembolehubah C# pada Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!