Maison > développement back-end > C++ > Comment la réflexion peut-elle être utilisée pour récupérer des noms de variables en C# ?

Comment la réflexion peut-elle être utilisée pour récupérer des noms de variables en C# ?

Linda Hamilton
Libérer: 2024-12-30 22:41:12
original
396 Les gens l'ont consulté

How Can Reflection Be Used to Retrieve Variable Names in C#?

Comprendre la récupération de noms de variables par réflexion

La tâche de récupération de noms de variables à l'aide de la réflexion intrigue les développeurs depuis un certain temps. L'impossibilité d'accéder aux noms de variables après la compilation dans IL présente un défi. Cependant, avec une approche créative, la réflexion peut être exploitée pour surmonter cette limitation.

Pour y parvenir, des arbres d'expression et une promotion de clôture sont utilisés. Les arbres d'expression offrent un moyen de représenter les expressions de manière programmatique. En promouvant une variable en fermeture, vous pouvez efficacement conserver son nom.

Le code suivant démontre l'implémentation de cette technique :

static string GetVariableName<T>(Expression<Func<T>> expr)
{
    var body = (MemberExpression)expr.Body;

    return body.Member.Name;
}
Copier après la connexion

Cette méthode prend une expression et récupère le nom de la variable à laquelle elle fait référence. Par exemple :

static void Main()
{
    var someVar = 3;

    Console.Write(GetVariableName(() => someVar));
}
Copier après la connexion

Dans cet exemple, la méthode GetVariableName est utilisée pour récupérer le nom de la variable someVar.

Considérations relatives aux performances

Il est important de noter que cette technique peut être coûteuse en calcul. La création et la destruction d'objets pendant l'exécution peuvent augmenter la pression du garbage collection. De plus, sous le capot, plusieurs méthodes sont appelées et la réflexion est fortement utilisée. Par conséquent, il est conseillé d'éviter d'utiliser cette approche dans les chemins de code critiques en termes de performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal