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
Lepaskan: 2024-12-27 03:56:09
asal
272 orang telah melayarinya

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));
Salin selepas log masuk

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;
}
Salin selepas log masuk

Untuk menggunakan kaedah ini, kami membungkus pembolehubah dalam ungkapan lambda:

Console.WriteLine(GetVariableName(() => someVar));
Salin selepas log masuk

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));
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan