Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mendapatkan Nama Pembolehubah C# pada Runtime?

Bagaimanakah Saya Boleh Mendapatkan Nama Pembolehubah C# pada Runtime?

Linda Hamilton
Linda Hamiltonasal
2024-12-27 03:56:09275semak imbas

How Can I Get a C# Variable's Name at Runtime?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn