Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mendapatkan Nama Pembolehubah dalam C# Menggunakan Refleksi dan Apakah Alternatifnya?

Bagaimanakah Saya Boleh Mendapatkan Nama Pembolehubah dalam C# Menggunakan Refleksi dan Apakah Alternatifnya?

Mary-Kate Olsen
Lepaskan: 2024-12-30 18:48:15
asal
190 orang telah melayarinya

How Can I Get a Variable's Name in C# Using Reflection and What are the Alternatives?

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

Penggunaan:

static void Main()
{
    var someVar = 3;

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

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

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!

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