Mendapatkan Nama Pembolehubah melalui Refleksi
Menentukan nama pembolehubah selepas penyusunan menggunakan pantulan sahaja tidak boleh dilaksanakan. Pembolehubah kehilangan nama mereka semasa penyusunan kepada Bahasa Pertengahan (IL).
Walau bagaimanapun, menggunakan pepohon ungkapan dan ungkapan lambda, adalah mungkin untuk mempromosikan pembolehubah kepada penutupan, sekali gus mewujudkan fungsi tanpa nama yang merujuk pembolehubah itu.
Kod Pelaksanaan:
static string GetVariableName<T>(Expression<Func<T>> expr) { var body = (MemberExpression)expr.Body; return body.Member.Name; }
Penggunaan:
static void Main() { var someVar = 3; Console.Write(GetVariableName(() => someVar)); }
Pertimbangan Prestasi:
Menggunakan kaedah ini boleh menjadi perlahan kerana penciptaan berbilang objek, tekanan GC, dan overhed refleksi.
Alternatif dengan C# 6.0 dan lebih baharu:
Dalam C# 6.0, nama kata kunci membenarkan pendekatan yang lebih mudah:
static void Main() { var someVar = 3; Console.Write(nameof(someVar)); }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Pembolehubah dalam C# Menggunakan Refleksi dan Apakah Alternatifnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!