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
Mary-Kate Olsenasal
2024-12-30 18:48:15195semak imbas

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;
}

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!

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